在wcf通信中装饰dto类的正确方法

时间:2013-11-22 12:52:24

标签: c# .net wcf

我有类BookDTO,它代表将用于在客户端和服务之间交换数据的对象,其中服务是wcf服务具有以下属性

[Serializable]
[DataContract]
[KnownType(typeof(Book))]
public class BookDTO {...}

这种装饰物体的正确(标准)方式是通过电线发送的吗? 我见过

的例子
[DataContract(NameSpace="somenamespace.DTO.Book")]

这里有[KnownType(typeof(Book))]还原剂吗?

我忘了提到我已经介绍了DataMember属性,所以请忽略它。

2 个答案:

答案 0 :(得分:3)

实际上当你使用DataContract metatag时,Serializable Metatag什么都不做。这是来自MSDN文章的引用:

  

使用[Serializable],所有字段都成为数据合同的一部分(除非它们标有[NonSerialized])。使用[DataContract]时,仅包含标有[DataMember]的成员。请注意,如果某个类型同时具有[DataContract]和[Serializable]属性,它将使用[DataContract]映射

http://msdn.microsoft.com/en-us/magazine/cc163569.aspx

KnownType atrribute Marvin在评论你的问题时向你描述。

答案 1 :(得分:2)

以下课程是一个简单的DTO:

[DataContract]
public class DataTransferObjectExample
{
    [DataMember]
    public string ExampleData { get; set; }
}

其他所有内容都适用于特殊情况,我们只能检查您是否发布了整个代码。