我有一节课 - 说地方
public class Place{
public int id;
public string name;
public string slug;
}
还有其他类,如City,State,Country,这些类派生自Place类。
我得到一个像这样的XML字符串,它有一系列城市
<cities>
<City>
<name>
<![CDATA[Mumbai]]>
</name>
<slug>
<![CDATA[mumbai]]>
</slug>
</City>
<City>
<name>
<![CDATA[Thane]]>
</name>
<slug>
<![CDATA[thane]]>
</slug>
</City>
</cities>
我在city数组中反序列化该字符串并发送到Angular UI。
在前端,没有使用id字段。但由于它是类的一部分,因此空/ null id字段也会反序列化。 我可以从类中删除id字段,但它在其他函数中使用,所以我不能这样做。 我不想使用XmlIgnore属性,因为某些人可能已在其他功能中使用过该字段。
我的问题是,有没有办法在发送之前删除id字段?
return Serializer.DeserializeXml<Cities>(_strCities);
答案 0 :(得分:0)
您可以在属性
上使用[XmlIgnore]和[ScriptIgnore]属性[XmlIgnore]
[ScriptIgnore]
public int intvar{get;set;}
答案 1 :(得分:0)
解决方案非常简单。 我不得不添加另一个函数 - ShouldSerializePropertyName。 该函数将返回true或false,并根据结果将序列化或反序列化id:)
public bool ShouldSerializeid()
{
return !(id.Equals(string.Empty)|| id.Equals(0));
}
我在MSDN -
上找到了这个解释ShouldSerialize和Reset是您可以提供的可选方法 对于属性,如果属性没有简单的默认值。 如果属性具有简单的默认值,则应该应用 DefaultValueAttribute并为属性提供默认值 而是构造函数。