Dino,
thanks for the informative answer with samples. I agree with what you write,
but that was not what I had in mind. Consider this c# code:
IPerson foo = new Person();
foo.Name; // works in c#, because foo is of type IPerson.
in ipy, I can not explicitly define an Interface type like
foo = IPerson(Person())
And even if I pass the IPerson to ipy, ipy will "see" the first
implementation, not the type I am passing. So, If I have something like
this:
locals["foo"] = foo;, where foo is defined as:
IFoo1 foo = new Foo() as IFoo1;
where
Foo: BaseFoo, IFoo1, IFoo2
and BaseFoo is defined as
BaseFoo : IFoo1, IFoo2
and IFoo1 { string Name {get;set;}}
then Python will "see" the object passed in as BaseFoo, as this is the only
implementation (although we want to pass in the "contract", interface
IFoo1).
I know it looks complicated... In short:
If I pass ISomething to c#, I can call it. If I pass ISomething to ipy, it
"knows better" and treats it as BaseSomething or whatever the first class
is. ;)
Maybe a strong-typed method of passing in the locals/globals would help.
Something like anonymous types, perhaps?
IMyInteface myInterface = ....
engine.Execute("print foo.Name", eng.CreateModule(), new { foo = myInterface
});
Miha
On Jan 23, 2008 9:35 PM, Dino Viehland <[EMAIL PROTECTED]> wrote:
> I agree, we should document it, unfortunately our documentation is still
> woefully inadequate L.
>
_______________________________________________
Users mailing list
[email protected]
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com