C# 使用Datacontract:WCF

C# 使用Datacontract:WCF,c#,wcf,datacontract,C#,Wcf,Datacontract,我应该如何声明datacontracts 我的运营合同有一个方法: 苹果 我的数据合同苹果看起来像 [DataContract] public class Apple { [DataMember] public int Id { get; set; } [DataMember] public FruitType type { get; set; } } 因为还有另一个类型的成员 [DataContract] public class FruitType {

我应该如何声明datacontracts

我的运营合同有一个方法:

苹果

我的数据合同苹果看起来像

[DataContract]
public class Apple
{
   [DataMember]
   public int Id { get; set; }

    [DataMember]
    public FruitType type { get; set; }
}
因为还有另一个类型的成员

[DataContract]
public class FruitType
{
   [DataMember]
   public int Id { get; set; }

    [DataMember]
    public string type { get; set; }
}
或 作为一个简单的类

  public class FruitType
  {     
    public int Id { get; set; }     
    public string type { get; set; }
  }
这两者有什么区别?除此之外,简单类型不是datacontract,将取决于我想如何使用它


我应该如何声明它???

这些属性使您可以控制如何以不同格式表示属性。例如,对于XML,可以指定XML名称空间和XML节点名称

即使您对默认属性名和默认名称空间感到满意,当您尝试将数据序列化为XML时,XML节点也会有奇怪的名称,例如typek_BackingField


换句话说,如果您使用WCF,您应该使用DataContract和DataMember属性,即使您认为它工作正常,格式化的数据也可能与您期望的不一样。因此,它删除了与其他(非WCF)系统的兼容性。甚至当您不与其他WCF系统共享您的类型(合同)时。

您应该将标记c更改为c#请参阅此链接。你的问题[此处][1][1]已得到回答: