wcf通信中dto类的适当修饰方式

  • 本文关键字:方式 通信 dto wcf c# .net wcf
  • 更新时间 :
  • 英文 :


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

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

这是一种合适的(标准的)装饰方式吗?我见过的例子

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

这里有[KnownType(typeof(Book))]冗余吗?

我忘了提到我是用DataMember属性介绍的,所以请忽略这一点。

实际上,当您使用DataContract元标签时,Serializable元标签什么都不做。这是引用MSDN文章:

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

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

KnowType Marvin在对您的问题的评论中向您描述了一个问题。

以下类是一个简单的DTO:

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

其他一切都是针对特殊情况的,只有当你发布整个代码时,我们才能进行检查。

最新更新