我有一个相当复杂的对象模型,我正在尝试使用 WCF 进行序列化。我遇到了一个问题,我可以在服务器上创建一个新实例并将其返回给客户端,然后尝试将相同的对象传回,甚至使用 DataContractSerializer 对其进行序列化会引发异常。
测试方法 Server.Service.Test.SerializationTest.TestFilingSerialization 抛出异常:System.Runtime.Serialization.SerializationException:反序列化 MyNameSpace.MyObject 类型的对象时出错。类型 '' 中的属性 '' 没有设置方法
它没有给我任何关于我应该丢失的 setter 的信息,即使我已经尝试通过继承层次结构查找丢失的 setter,我似乎无法通过这个。 MyObject是我要序列化的对象的一种属性,这是有趣的部分。在该属性的设置器中,我的代码如下所示:
set
{
_backingField = value;
_backingField.IsDirtyManager.SetIsDirty();
NotifyPropertyChanged("MyProperty");
if (!ContainsType(_backingField.GetType()))
{
Aggregates.Add(_backingField);
}
}
如果我注释掉 Aggregates.Add 它进入下一个属性并在那里抛出相同的异常,踢球者是,它通过具有相同代码的其他属性,在它击中这个并死亡之前,所以我不知道是什么问题可能是。
任何人都知道真正的错误在哪里,因为属性名称和类型没有在异常中填写,所以看起来错误必须是别的东西。如果我只是在客户端上创建一个新实例,我可以反序列化和序列化没有问题,所以这里一定有我遗漏的东西。关于寻找什么的任何想法?
编辑
我实际上只是这样做:
- 创建实例
- 连载
- 反序列化
- 重新序列化
- 死在这里