c# - 序列化从 CLR 类型继承的 IronPython 对象

标签 c# python serialization ironpython pickle

这可能是一个有点奇怪的问题,但是是否有任何可靠的方法来序列化其类扩展 CLR 类型的 IronPython 对象?

例如:

class Foo(System.Collections.Generic.List[str]):
    def Test(self):
        print "test!"

System.Collections.Generic.List<string>可以用 Pickle 序列化,因为它实现了 ISerializable接口(interface),但可序列化 CLR 类型的发出子类似乎不起作用,我得到 ImportError: No module named Generic in mscorlib, Version=4运行时 pickle.dumps(Foo()) .

此外,运行通常的 Formatter.Serialize(stream, object)给我:

SystemError: Type 'IronPython.NewTypes.System.Collections.Generic.List`1_4$4' in Assembly Snippets.scripting, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' is not marked as serializable.

在嵌入式 C# 环境中运行时,如何实现 IronPython 对象的序列化?

最佳答案

我不知道这是否是你所追求的,但你可以考虑 protobuf ( here ) 的 python 版本?请注意,我还没有专门在 ironpython 上测试过它。这具有额外的优势,即还有 C# 实现可能会有所帮助,同时保持平台独立性。如果可能,我希望让 protobuf-net 支持 DLR 类型,但这是一项艰巨的工作。

作为旁注,我个人建议使用专用的 DTO 类型,而不是尝试扩展内置类型。

关于c# - 序列化从 CLR 类型继承的 IronPython 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3734063/

相关文章:

python - PySpark/Aws Glue 中的性能问题

.net - 如何使 sgen.exe 保留程序集的版本?

c# - 格式化 BigInteger 导致空为 0

c# - "System.IO"在 C# 中是什么意思?

python - python中的max函数返回错误结果

python - 如何查找某个特定 ip 被 ping 到该 url 的次数?

java - 类定义中的序列版本 ID

c - c 和缓冲区中的多态性

c# - 从 aspx 运行 Selenium 测试

C# 折线图如何创建垂直线