Thanks Michael for the advice. Must appreciated. Unfortunately I hasn't
worked out yet tho :(
I can use pickle from C# using Evaluate, or from within a Python class,
on a "pure" Python object. However any attempt at pickling a python
object that derives from a C# base result in an exception like this:
Cannot convert MyObject(<MyObject object at 0x000000000000002B>) to Int32
Exploring further, I came across Ops.GetDynamicType() and
Ops.GetAttrsNames() which I thought might be helpful to get the
attributes of an object and serialize it somehow (manually), but
GetAttrNames requires an ICallerContext, and I can't see how to get one
of those.
It seems that whilst serializing .NET classes is trivial, and
serializing python classes is trivial, serializing something that
touches both is proving quite difficult.
Any further suggestions gratefully received!
Thanks, Paul
Michael Foord wrote:
Paul Turbett wrote:
Hi,
I'm using IP as a scripting engine in a C# app. I have various Python
classes that derive from a C# base class, and have there own additional
data & functionality.
I would like to be able to serialize instances of the Python classes
from the C# host for persistence across sessions. Using the standard
BinaryFormatter with the Serializable attribute is not working - I get
an error about the python class not being marked as serializable (the C#
base class is marked as serializable though).
How can I serialize python objects from C#? Should I use reflection to
roll my own serializer, or is there something in one of the lesser
documented assemblies like Ops I should use?
Typically for serializing Python objects you would use pickle [1]. The
'dumps' function returns a string (make sure you use the text protocol
for IronPython).
You could then execute code inside the Python engine to serialize /
deserialize objects. I've not tried this for instances that inherit from
C# base classes - but it should work fine. :-)
Michael Foord
http://www.ironpythoninaction.com
.. [1] http://docs.python.org/lib/module-pickle.html
I'm using IP 1.1.1 (but will move to 2.0 if that will help). Any
pointers & advice greatly appreciated!
Thanks, Paul
_______________________________________________
Users mailing list
Users@lists.ironpython.com
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
_______________________________________________
Users mailing list
Users@lists.ironpython.com
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
_______________________________________________
Users mailing list
Users@lists.ironpython.com
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com