3

我正在尝试以特定方式序列化对象。主类有一个包含一些属性的容器类,但从模式的角度来看,这些属性实际上应该在主类上。为了序列化的目的,有没有办法绕过容器类并将容器类上的属性视为主类上的属性?

我正在尝试按照以下方式创建 XML:

<Main foo="3" bar="something">
  <Others>etc</Others>
</Main>

从此代码:

[System.Xml.Serialization.XmlRootAttribute("Main", Namespace = "")]
public class MainObject
{
    public HelperContainer { get; set; }

    public string Others { get; set; }
}

public class HelperContainer
{
    [System.Xml.Serialization.XmlAttributeAttribute(AttributeName = "foo")]
    public int Foo { get; set; }

    [System.Xml.Serialization.XmlAttributeAttribute(AttributeName = "bar")]
    public string Bar { get; set; }
}
4

1 回答 1

0

您可能想尝试实现 IXmlSerializable onMainObject以便能够控制调用序列化时发生的情况。对于读取和写入 xml 方法,指定要序列化的字段。

查看 msdn:http: //msdn.microsoft.com/en-us/library/system.xml.serialization.ixmlserializable.aspx

就像是:

public class MainObject : IXmlSerializable
{
    public HelperContainer { get; set; }

    public string Others { get; set; }

    public void WriteXml (XmlWriter writer)
    {
        writer.WriteString(Others);
        writer.WriteAttributeString("foo", HelperContainer.Foo);
        writer.WriteAttributeString("bar", HelperContainer.Bar);
    }

    public void ReadXml (XmlReader reader)
    {
        Others = reader.ReadString();
        //...
    }
}
于 2013-09-17T22:10:25.933 回答