0

我有一个关于[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]属性,我也没有收到任何错误。

请用示例给我一个简短的解释,以便我了解何时给出该属性以及何时不给出该属性。

谢谢,萨蒂亚普拉塔普。

4

2 回答 2

1

如果它们提供默认构造函数DataContractSerializer,则可以处理没有该属性的类。有关详细信息,DataContract请参阅MSDN 文档。

于 2013-08-28T11:54:58.227 回答
1

从 .NET 3.5 Service Pack 1开始,您可以省略(不使用)[DataContract]and[DataMember]属性。如果你这样做,那么DataContractSerializerWCF 中的行为就像 XML 序列化程序一样 - 它只会序列化所有公共属性。

无论如何,我更喜欢使用[DataContract][DataMember]显式 - 它让我有机会指定选项(如数据协定的 XML 命名空间、 的顺序[DataMember]),它还让我也可以从序列化中排除某些属性。

一旦您开始[DataMember]在一个属性上使用,那么只有那些用 a 修饰的属性[DataMember]才会被查看用于 WCF 序列化。

于 2013-08-28T12:13:16.290 回答