我正在使用一些现有的代码,定义如下。
class Example
{
public float x_field;
public float x_property
{
get { return x_field; }
set { x_field = value; }
}
}
为什么我这样定义我不知道,但是我无法改变它的实现。问题是,当我序列化它时,我显然在xml输出中得到了两个值。如果我无法修改“示例”类,怎么能阻止这种情况发生呢?
我希望Serializer只输出公共属性而不是公共字段。
答案 0 :(得分:6)
您可以使用XmlAttributeOverride的XmlSerializer参数,例如
XmlAttributeOverrides overrides = new XmlAttributeOverrides();
XmlAttributes attributes = new XmlAttributes();
attributes.XmlIgnore = true;
overrides.Add(typeof(Example), "x_field", attributes);
XmlSerializer xs = new XmlSerializer(typeof(Example), overrides);
答案 1 :(得分:1)
我会使用一个中间对象。您可以控制以创建要序列化的确切模型。
class IntermdeiateModel
{
public float x+property {get;set;}
}
....
return Serializer.Serialze(GetAllEamples().Select(e => new IntermdeiateModel { x_property = e.x_property));