我有一个关于[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]属性,我也不会收到任何错误。
请给我一个简短的解释,并举例说明,以便我能理解何时给予该属性,何时不给予该属性。
谢谢,萨蒂亚·普拉塔普。
发布于 2013-08-28 19:54:58
如果没有DataContract属性的类提供了默认构造函数,则DataContractSerializer可以处理这些类。有关更多详细信息,请参阅MSDN documentation。
发布于 2013-08-28 20:13:16
从.NET 3.5 Service Pack1开始,您可以省略(不使用) [DataContract]和[DataMember]属性。如果这样做,那么WCF中的DataContractSerializer将会像XML序列化程序一样工作--它只序列化所有的公共属性。
我更喜欢显式地使用[DataContract]和[DataMember] -它让我有机会指定选项(比如数据契约的XML命名空间、[DataMember]的顺序),而且它还允许我从序列化中排除某些属性。
一旦你开始在一个属性上使用[DataMember],那么那些用[DataMember]修饰的属性将被视为序列化。
https://stackoverflow.com/questions/18487083
复制相似问题