【发布时间】:2020-03-24 00:39:53
【问题描述】:
我正在将一个库从 .NET Framework 移植到 .NET Standard 2.0。初始库使用 BinaryFormatter 序列化 MethodInfo 类型的对象。虽然这在 .NET Framework 中没有任何问题,但在 .NET Standard 中会引发异常:
System.Runtime.Serialization.SerializationException:在程序集“System.Private.CoreLib,版本=4.0.0.0,文化=中性,PublicKeyToken=7cec85d7bea7798e”中键入“System.Reflection.RuntimeMethodInfo”未标记为可序列化.
为什么这在 .NET Standard/Core 中不起作用?是否有任何解决方法可以使这成为可能?我尝试使用 Newtonsoft 将其序列化为 JSON,但后来我无法反序列化它,而且序列化的对象最终会占用大量内存...
感谢任何建议!
【问题讨论】:
-
你为什么要序列化
RuntimeMethodInfo? -
我们有两个系统共享同一个库,其中第一个系统告诉第二个系统调用一个方法。使用 .NET Framework 库,调用只需传递一个 Expression 即可完成同样的事情
-
那你为什么不使用自己的包含程序集名称、类型名称和方法名称的类? “第二个系统”可以从此类信息中重新创建
RuntimeMethodInfo... 有一些缓存应该没问题 -
好点,试试看!
标签: c# serialization .net-core .net-standard-2.0