This is a known issue - an easier work around is to create a typed proxy in
Python that holds onto the instance & the interface type and does calls through
the interface type passing the instance as the 1st parameter. Bug 470 has the
workaround code,
http://www.codeplex.com/WorkItem/View.aspx?ProjectName=IronPython&WorkItemId=470,
but it is:
class typedproxy(object):
__slots__ = ['obj', 'proxyType']
def __init__(self, obj, proxyType):
self.proxyType = proxyType
self.obj = obj
def __getattribute__(self, attr):
proxyType = object.__getattribute__(self, 'proxyType')
obj = object.__getattribute__(self, 'obj')
return getattr(proxyType, attr).__get__(obj, proxyType)
The issue here is that in .NET doing a cast of an MBR to an interface type
always succeeds - and internally we're doing lots of casts against interfaces.
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Russell Lear
Sent: Wednesday, September 20, 2006 6:55 AM
To: [email protected]
Subject: [IronPython] .NET remoting with IronPython
I'm trying to access a service that uses .NET remoting using IronPython. I
have a C# interface, something like:
interface IUserDB { ...
MyUser GetUser(string id);
....};
I've tried to get a remoted instance of that interface using the following
python:
t = a.GetType("IUserDB") # This works
db = System.Runtime.Remoting.RemotingServices.Connect(t, dbServerURL)
But if I try to do anything with db, I get:
SystemError: Type 'IronPython.Runtime.ModuleScope' in Assembly 'IronPython,
Version=1.0.60816.1877, Culture=neutral,
PublicKeyToken=31bf3856ad364e35' is not marked as serializable.
I get the same error if I instantiate the remoted object in C# and then try to
do anything with it in Python. My work around is to create a proxy that wraps
the remote object in a class that implements IUserDB by passing the calls
directly to the wrapped remote object. Works, but a little ugly. Any thoughts?
Thanks,
Russell.
_______________________________________________
users mailing list
[email protected]
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com