C# 关于可序列化类更新的奇怪WCF错误

C# 关于可序列化类更新的奇怪WCF错误,c#,.net,wcf,C#,.net,Wcf,这是设置,我在MyAssembly中有一个集合类,看起来是这样的: [Serializable()] public class MyCollection : List<MyItem> //MyItem is also serializable { public string MyProperty{ get; set; } //some methods for use by the current assembly } [Serializable()] 公共类MyC

这是设置,我在
MyAssembly
中有一个集合类,看起来是这样的:

[Serializable()]
public class MyCollection : List<MyItem> //MyItem is also serializable
{
    public string MyProperty{ get; set; }

    //some methods for use by the current assembly
}
[Serializable()]
公共类MyCollection:List//MyItem也可以序列化
{
公共字符串MyProperty{get;set;}
//当前程序集使用的某些方法
}
我有一个应用程序引用了一个wcf服务,而wcf服务又引用了这个
MyAssembly

问题:在过去,我们对类进行了很多更改,没有出现任何问题,但是我最近在
MyCollection
中添加了一些新方法(没有新属性),在重新编译和部署wcf服务之后,使用该服务的应用程序在被调用时会突然返回null
MyCollection


解决方案和问题:更新应用程序中的服务引用使一切恢复正常,但我的问题是为什么?我的理解是,新项目可以添加到您的类中,而无需更新引用,除非某些内容被更改或删除。有人能解释一下这一点或向我介绍一下吗?

当您添加对wcf服务的引用时,服务对象的副本(不是实际的真实副本,更像是代理对象)放置在客户端。所以,当您更新wcf服务对象时,客户端仍然只剩下旧的(无效的)副本。
当在wcf服务器ServiceContract或DataContract上进行更改时,您应该始终更新客户端上的引用。

当您向wcf服务添加引用时,服务对象的副本(不是实际的真实副本,更像代理对象)放置在客户端。所以,当您更新wcf服务对象时,客户端仍然只剩下旧的(无效的)副本。
当对wcf server ServiceContract或DataContract进行更改时,您应该始终在客户端更新引用。

是的,我知道如果您“更新”或“删除”类的成员,则会出现这种情况,但如果您“添加”成员,则不会出现这种情况。我们已经多次向类中添加成员,以前从未遇到过此问题。您是否使用共享库传递DataContract Entite?即使您添加了相同的故事。如果新成员未在DataContractYes中声明,则新成员未正确序列化回对象是的,我使用的是共享库。在这种情况下,您可能遇到了这种情况。我也有类似的情况。您可以从cilent中删除共享库,只使用vs.Right生成的代理对象。我知道,如果您“更新”或“删除”类的成员,就会出现这种情况,但如果您“添加”成员,则不会出现这种情况。我们已经多次向类中添加成员,以前从未遇到过此问题。您是否使用共享库传递DataContract Entite?即使您添加了相同的故事。如果新成员未在DataContractYes中声明,则新成员未正确序列化回对象是的,我使用的是共享库。在这种情况下,您可能遇到了这种情况。我也有类似的情况。您可以从cilent中删除共享库,只使用vs生成的代理对象。