对象如何获取对不同(和未引用)程序集中的类的引用?
-
06-07-2019 - |
题
我有两个项目:A / B.项目A是包含绑定到B中的目标的所有winforms的项目(逻辑项目)
A有一个类型的对象 A.Form
B有类型的对象 B.Serializer B.Logic
现在,A有一个对B的引用(但是B没有对A的引用),而A.Form包含一个B.Logic类型的成员变量。在某些时候,当所有数据都存储在B.Logic中时,我尝试通过调用B.Serializer(B.Logic)将该对象保存到磁盘。
此时我在序列化时出现错误,说明A.From未标记为可序列化。
但是项目B在ALL中没有引用A,即使它确实有一个成员引用A.Form,它甚至不应该编译。
解决方案
这里常见的罪魁祸首就是事件(在 B.Logic
中)或其他对外部对象的反向引用。您可以将字段标记为不是序列化:
[NonSerialized]
private SomeType foo;
或类似字段的事件:
[field: NonSerialized]
public event EventHandler Bar;
暂且不说 - 从描述中,我假设您正在使用 BinaryFormatter
;就个人而言,我对此有所保留 - 它是非常脆弱 。我建议一些非特定于实现的东西; XmlSerializer
, protobuf-net , Json.NET 等。
不隶属于 StackOverflow