我有两个项目: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 等。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top