我有一个相当复杂的对象模型,我试图使用WCF序列化。我遇到了一个问题,我可以在服务器上创建一个新实例并将其返回给客户端,然后尝试将同一个对象传回,甚至使用DataContractSerializer序列化它将引发异常。错误使用WCF和DataContractSerializer
测试方法Server.Service.Test.SerializationTest.TestFilingSerialization引发异常:System.Runtime.Serialization.SerializationException:对MyNameSpace.MyObject类型的对象进行反序列化时出现错误。没有设置属性''类型''的方法
它没有给我任何关于二传手的信息我被认为是失踪了,尽管我已经试过寻找遗漏的二传手的继承层次结构,但是我不能似乎通过了这一点。 MyObject是我试图序列化的对象上的一种属性,这里是有趣的部分。在二传手该财产,我有一些代码,看起来像这样:
set
{
_backingField = value;
_backingField.IsDirtyManager.SetIsDirty();
NotifyPropertyChanged("MyProperty");
if (!ContainsType(_backingField.GetType()))
{
Aggregates.Add(_backingField);
}
}
如果我注释掉Aggregates.Add它进入到下一个属性,并抛出了同样的异常那里,踢球的是,它得到的经过其他属性使用相同的代码,在它遇到这个并且死亡之前,所以我不知道这个问题会是什么。
任何人都会遇到真正的错误,因为属性名称和类型没有填写在异常中,所以它看起来像错误必须是别的东西。如果我只是在客户端上创建一个新实例,我可以反序列化和序列化没有问题,所以这里有一些我在这里丢失的东西。任何想法寻找什么?
编辑
我从字面上做只有这个:
- 创建实例
- 序列化
- 反序列
- 重新序列
- 死在这里
因此,在序列化过程中,客户端会发生这种情况吗? – scmccart 2009-11-13 20:41:39
是的,完全跳过WCF,这就是发生了什么,这是一个序列化问题。 – Nick 2009-11-13 21:04:41