如何自定义DataContract和DataMember名称的序列化方式?

时间:2015-06-30 16:20:28

标签: wcf generics

我正在开发一个WCF服务,我正在设计的其中一个类具有泛型类型。它看起来像这样:

[DataContract(Name="RecordOf{0}")]
public class Record<T>{
   [DataMember(Name="First{0}"] T First {get;set;
   [DataMember] T Second {get;set;}
}

当客户端生成服务引用时,如果我公开“DateTime?”,我希望记录显示如下作为通用类型:

[DataContract]
public class RecordOfDateTime{
   [DataMember] DateTime? FirstDateTime {get;set;}
   [DataMember] DateTime? SecondDateTime {get;set;}
}

但是,因为DateTime是一个结构,WCF将结构名称的第一个字母序列化为小写而不是大写(即像“dateTime”而不是“DateTime”)。此外,显然DataMember也不关心名称中是否有{0}。实际生成的内容如下所示:

[DataContract]
public class RecordOfdateTime{
   [DataMember] DateTime? First0 {get;set;}
   [DataMember] DateTime? Second {get;set;}
}

我该如何解决这个问题?此外,有没有办法单元测试数据协定/数据成员名称如何序列化而不必生成服务引用?

0 个答案:

没有答案