4

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

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

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

我希望序列化程序只输出公共属性而不是公共字段。

4

2 回答 2

6

您可以使用XmlSerializer的XmlAttributeOverride参数,例如

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);
于 2012-11-16T13:06:17.990 回答
1

我会使用一个中间对象。您可以控制它来创建您想要序列化的确切模型。

class IntermdeiateModel
{
     public float x+property {get;set;}
}
....

return Serializer.Serialze(GetAllEamples().Select(e => new IntermdeiateModel { x_property = e.x_property));
于 2012-11-16T13:07:36.380 回答