[IronPython] Interface in IronPython
Alex Willmer
alex at moreati.org.uk
Tue Mar 13 00:37:21 CET 2007
On Mon, 2007-03-12 at 17:12 -0500, Ed Fialkowski wrote:
> Hi all, I'm pretty much totally new to IronPython and have come to
> the
> point that I need an interface to interact with a co-worker's code,
> but I can't seem to find any documents or discussion on syntax for
> writing an interface.
Do you mean calling an interface defined by your co-worker, or
implementing an interface in IronPython for you co-worker to call?
> Does anyone know of a link that talks about interfaces in IronPython
> or feel like explaining one too me? :)
To my knowledge you cannot create a class in IronPython to be consumed
by C# or VB. I don't know if an IronPython class can implement an
interface.
To call an explicitly implemented interface, or access the properties of
an explicit interface use the following:
ISomeInterface.MethodName(instance, args)
ISomeInterface.PropertyName.GetValue(instance)
ISomeInterface.PropertyName.SetValue(instance, value)
As you've probably found attempting to cast, fails.
If you need to perform the equivalent of the C# expression 'instance is
ISomeInterface' (a QueryInterface?), then you'll find isinstance()
fails. Instead, for now use:
clr.GetClrType(ISomeInterface).IsAssignableFrom(clr.GetClrType(type(instance)))
Here are a couple of relevant bug reports:
http://www.codeplex.com/IronPython/WorkItem/View.aspx?WorkItemId=4538
http://www.codeplex.com/IronPython/WorkItem/View.aspx?WorkItemId=1506
My thanks to Shri Borde for helping me understand this.
Regards, Alex
More information about the Ironpython-users
mailing list