gpt4 book ai didi

c# - XML 序列化 - 绕过容器类?

转载 作者:行者123 更新时间:2023-11-30 18:32:12 25 4
gpt4 key购买 nike

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

我正在尝试按照以下方式创建 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; }
}

最佳答案

您可能想尝试在 MainObject 上实现 IXmlSerializable,以便能够控制调用序列化时发生的情况。对于读取和写入 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();
//...
}
}

关于c# - XML 序列化 - 绕过容器类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18860289/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com