如何删除XML数据中的k__BackingField

时间:2016-05-12 12:48:18

标签: c# xml wcf

我正在收到来自服务的xml数据,该服务有' k_BackingField'在每个元素中。

{

  "<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

    }

  ]

}

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

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

4 个答案:

答案 0 :(得分:5)

不要使用自动属性,使用带有显式私有变量的属性作为后端。如果你没有,那么编译器会创建那些k__BackingField以保存属性值。

唐&#39; T:

public string MyProperty { get; set; }

使用:

private string _myProperty;
public string MyProperty
{ 
    get { return _myProperty; } 
    set { _myProperty = value; }
}

答案 1 :(得分:0)

您应该向您的班级添加[DataContract];

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

  [DataMember]
  public String Text{ get; set; }
}

答案 2 :(得分:0)

只需将[DataContract]属性添加到您的班级

答案 3 :(得分:-1)

您可以使用自动属性

public int MyProperty { get; set; }

但您需要将属性添加到类

[Newtonsoft.Json.JsonObject]
public class MyClass
{
   public int MyProperty { get; set; }
}