1

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

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

    //some methods for use by the current assembly
}

我有一个应用程序引用了 wcf 服务,而该服务又引用了 this MyAssembly

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

解决方案和问题:更新应用程序中的服务引用使一切恢复正常,但我的问题是为什么?我的理解是,除非更改或删除某些内容,否则无需更新参考即可将新项目添加到您的课程中。有人可以解释一下或在某处推荐我吗?

4

1 回答 1

1

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

于 2012-10-31T18:47:07.727 回答