我有 3 个项目的解决方案: 1. 客户端(参考:通过 Visual Studio 2012 创建的 DataContracts 和 ServiceReference,名称为 TaskerWcfService) 2. DataContracts 3. WCF 服务(DataContracts)
首先,我创建了 WCFService 并且在 DataContracts 中只有一个类:
[DataContract]
public class WorkItem
{
[DataMember]
public Int64 Id { get; set; }
[DataMember]
public String Title { get; set; }
[DataMember]
public String Description { get; set; }
[DataMember]
public String ItemType { get; set; }
}
然后,我创建了一个带有 ServiceReference(名称:TaskerWcfReference)的客户端,并且 WorkItem 类的命名空间是 - DataContracts lib。最后,我用额外的类扩展了 WCF 服务和 DataContracts:
public class InfoData
{
[DataMember]
public Guid Id { get; set; }
[DataMember]
public String Value { get; set; }
[DataMember]
public Int32 Order { get; set; }
[DataMember]
public bool IsDefault { get; set; }
}
但是当我更新 ServiceReference 时,我发现 InfoData 类在自动生成的代理中,它的命名空间是:TaskerWcfReference.InfoData。
为什么以类似方式描述的类 - 放置在不同的地方?服务契约的函数以同样的方式返回 Generic.List 和 T。服务合同的描述也类似。