我对[DataContract]
属性有疑问。
我编写了如下代码:这里我没有为我的测试类使用[DataContract]
属性。
class test
{
[Datamember]
public string Strproperty
{
get;
set;
}
[Datamemer]
public string Strproperty2
{
get;
set;
}
}
class checktotal:Iservice
{
public string testmethod(test obj)
{
return obj.Strproperty+Strproperty2;
}
}
为此我从客户端发送数据我正确地获取了值。
是否有必要对该测试类使用[DataContract]
属性?
如果我从测试类属性中删除[Datamember]
,则从客户端发送时会出现错误。但即使我没有使用[DataContract]
属性,我也没有收到任何错误。
请通过示例给我一个简短的解释,以便我能够理解何时提供该属性以及何时不提供该属性。
谢谢, Satya Pratap。
答案 0 :(得分:1)
DataContractSerializer
如果提供默认构造函数,则可以处理没有DataContract
属性的类。有关详细信息,请参阅MSDN documentation。
答案 1 :(得分:1)
从.NET 3.5 Service Pack 1 开始,您可以省略(不使用)[DataContract]
和[DataMember]
属性。如果你这样做,那么WCF中的DataContractSerializer
就像XML序列化器一样 - 它只会序列化所有公共属性。
我更倾向于明确地使用[DataContract]
和[DataMember]
- 它让我有机会指定选项(比如数据协定的XML命名空间,[DataMember]
的顺序)并让它我,例如也从序列化中排除某些属性。
只要您在一个媒体资源上开始使用[DataMember]
,就会查看 那些用[DataMember]
修饰的属性,以便进行WCF序列化。