1

我有两个项目:A/B。项目 A 是包含绑定到 B 中的对象(逻辑项)的所有 winform 的项目

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根​​本没有引用A,即使它确实有一个成员引用A.Form,它甚至不应该编译。

4

1 回答 1

1

这里通常的罪魁祸首是事件(in B.Logic)或对外部对象的其他反向引用。您可以将字段标记为不用于序列化:

    [NonSerialized]
    private SomeType foo;

或类似字段的事件:

    [field: NonSerialized]
    public event EventHandler Bar;

顺便说一句 - 除了描述,我假设您正在使用BinaryFormatter; 就个人而言,我对此有所保留——它非常脆弱。我会建议一些非特定于实现的东西;XmlSerializer, protobuf-net , Json.NET

于 2009-05-06T21:24:27.690 回答