XmlSerializer忽略公共字段?

时间:2012-11-16 13:02:18

标签: c# xmlserializer ignore

我正在使用一些现有的代码,定义如下。

class Example
{
    public float x_field;
    public float x_property
    {
        get { return x_field; }
        set { x_field = value; }
    }
}

为什么我这样定义我不知道,但是我无法改变它的实现。问题是,当我序列化它时,我显然在xml输出中得到了两个值。如果我无法修改“示例”类,怎么能阻止这种情况发生呢?

我希望Serializer只输出公共属性而不是公共字段。

2 个答案:

答案 0 :(得分:6)

您可以使用XmlAttributeOverrideXmlSerializer参数,例如

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));