我正在开发一个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;}
}
我该如何解决这个问题?此外,有没有办法单元测试数据协定/数据成员名称如何序列化而不必生成服务引用?