我正在尝试以特定方式序列化对象。主类有一个容器类,它包含一些属性,但从模式的角度来看,这些属性实际上应该在主类上。有没有办法绕过容器类并将容器类上的属性视为主类的属性,以便进行序列化?
我正在尝试按以下方式创建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; }
}
答案 0 :(得分:0)
您可能想尝试在MainObject
上实现IXmlSerializable,以便能够控制调用serialize时发生的情况。对于读取和写入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();
//...
}
}