我有一项WCF服务,其中有一些数据合同。我正在使用Web Service软件工厂,该工厂使用设计师来创建所有消息,数据和其他合同,并将其创建为部分类。当代码再生时,重新创建了类。

using WcfSerialization = global::System.Runtime.Serialization;

[WcfSerialization::CollectionDataContract(Namespace = "urn:CAEService.DataContracts", ItemName = "SecurityItemCollection")]
public partial class SecurityItemCollection : System.Collections.Generic.List<SecurityItem>
{
}

数据合同是良好的自定义类的通用列表。但是,我现在想在此类中添加一个属性,因此我在同一名称空间中添加了此部分类:

public partial class SecurityItemCollection
{
    public int TotalRecords { get; set; }
}

这似乎在服务方面工作正常,但是当我编译并从客户端更新服务引用时,该类序列化并在客户端重新创建新属性IE时,它缺少了新的属性财产。有人知道为什么这是吗?

tia

编辑:好的,这正式使我发疯。我唯一可以看到的是它使用CollectionDataContract属性而不是DataContract。这是否不允许班级的数据成员序列化?为什么会这样?它在服务方面工作正常 - 我可以看到并填充值没问题。但是,当我更新客户对客户的服务引用时,什么都没有,只有没有数据成员的colealction类。

有帮助吗?

解决方案 2

好的,经过大量的搜索,我终于发现不允许这样的类别标记为CollectionDataContract不能具有数据成员。为什么这是我不知道的,但是这花了我几个小时,而且头痛。请参阅下面的链接:

WCF CollectionDataContract和DataMember

其他提示

尝试将datamember属性添加到“ totalRecords属性”

我知道这很旧,但是当我搜索这个主题时,它一直在出现。我能够通过向属性添加“ datamemberattribute”属性来使此工作。以下是一个代码示例。

public partial class SecurityItemCollection
{
    [global::System.Runtime.Serialization.DataMemberAttribute()]
    public int TotalRecords { get; set; }

}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top