如何在XML数据中删除k__BackingField

kaa*_*man 2 c# xml wcf

我正在从每个元素中都有“ k_BackingField”的服务接收xml数据。

{

  "<UserId>k__BackingField": "b5184b32-0d88-49e7-ba98-afbc96e47b7e",

  "<Date>k__BackingField": "2016-05-11T13:40:36.6542578+01:00",

  "<Resources>k__BackingField": [

    {

      "<Type>k__BackingField": "Num",

      "<Id>k__BackingField": "978000940016736",

      "<IsDeleted>k__BackingField": false

    }

  ]

}
Run Code Online (Sandbox Code Playgroud)

我知道WCF服务方法何时具有[DataMember] [DataContract]时,它将提供正确的XML格式数据,但是当该方法单独使用[Serializable]时,它将提供每个元素中带有K_BackingField的XML数据。

我将存储的数据实际上应该是没有k__BackingField的干净XML。我们如何使用C#删除它?

Osc*_*car 5

不要使用自动属性,而应使用带有显式私有变量的属性作为后端。如果不这样做,则编译器将创建那些k__BackingField来为您保存属性值。

别:

public string MyProperty { get; set; }
Run Code Online (Sandbox Code Playgroud)

使用:

private string _myProperty;
public string MyProperty
{ 
    get { return _myProperty; } 
    set { _myProperty = value; }
}
Run Code Online (Sandbox Code Playgroud)


小智 5

你应该添加[DataContract]到你的班级;

[Serializable, DataContract]
public class TestObject
{
  [DataMember]
  public Boolean Value { get; set; }

  [DataMember]
  public String Text{ get; set; }
}
Run Code Online (Sandbox Code Playgroud)