Oh, this is probably a loader context issue.  Do you need to setup sys.path in 
order to clr.AddRefernece your assembly?  If so then your assembly is most 
likely getting loaded twice.  Once in the normal load context and once in the 
load file context (which is the context that files that live on sys.path but 
outside of your app domain base will get loaded into).

Probably what's best would be for you to get the assembly object from one of 
your types (typeof(IFoo).GetAssembly()) and then add that reference directly to 
the clr module instead of asking us to do the load.  You should be able to do 
that via PythonEngine.LoadAssembly.


From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Matthew Swank
Sent: Tuesday, April 03, 2007 7:40 AM
To: 'Discussion of IronPython'
Subject: Re: [IronPython] strange runtime error hosting Iron Python in C# app

Also, using the library directly from the ipy shell does not trigger the 
observed behavior.

Matt
________________________________
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Dino Viehland
Sent: Monday, April 02, 2007 5:37 PM
To: Discussion of IronPython
Subject: Re: [IronPython] strange runtime error hosting Iron Python in C# app

How exactly are you doing this?
...

I have a C# app that embeds python to run scripts.

Given a script both the script and the app need to access the same library. 
Both the script and the app create objects using the library.  The app links to 
the shared library.  In addition, each hosted script has a preamble to add a 
reference to, and imports namespaces from the shared library.

Matt
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Matthew Swank
Sent: Monday, April 02, 2007 3:03 PM
To: [email protected]
Subject: [IronPython] strange runtime error hosting Iron Python in C# app

Given a set of classes in a c# Library like the following:

    public interface IFoo
    {
        int Bar { get;}
    }

    public abstract class FooBase : IFoo
    {
        public abstract int Bar { get;}
    }

    public class FooConcrete1 : FooBase
    {
        public override int Bar { get { return 1; } }
    }

and a C# consumer:
       public class FooUser
    {
        public static int FooInt(IFoo a)
        {
            return a.Bar;
        }
    }

if I call FooInt from Python I'll get: "We Encountered an error: expected IFoo, 
got FooConcrete1".

I suspect the error stems from adding an assembly as a reference inside the 
python code in addition to referencing it in the C# project.  If this is the 
case, how do I make referenced assemblies visible to the hosted python module 
w/o using AddReference...?

Thanks,

Matt
_______________________________________________
users mailing list
[email protected]
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com

Reply via email to