gpt4 book ai didi

c# - 如何序列化 List

转载 作者:可可西里 更新时间:2023-11-01 08:41:39 25 4
gpt4 key购买 nike

我有 A 类。B 类和 C 类是 A 类的一部分。

Class A 
{

//Few Properties of Class A

List<typeof(B)> list1 = new List<typeof(B)>()

List<typeof(C)> list2 = new List<typeof(C)>()

Nsystem NotSystem { get; set; } // Enum Property Type

}

public enum Nsystem {
A = 0,
B = 1,
C = 2
}

我想序列化 A 类并用它生成 XML;我还想序列化 list1 和 list2 以及枚举...

什么是序列化此 XML 的好方法,因为我需要将对象转换为 XML 并将 XML 转换为对象的功能 ...

执行此操作有哪些好的选择?谢谢

最佳答案

您可以使用 XMLSerializer :

var aSerializer = new XmlSerializer(typeof(A));
StringBuilder sb = new StringBuilder();
StringWriter sw = new StringWriter(sb);
aSerializer.Serialize(sw, new A()); // pass an instance of A
string xmlResult = sw.GetStringBuilder().ToString();

为了使其正常工作,您还需要对您的类型进行 xml 注释,以确保它使用正确的命名进行序列化,即:

public enum NSystem { A = 0, B = 1, C = 2 }

[Serializable]
[XmlRoot(ElementName = "A")]
Class A
{
//Few Properties of Class A
[XmlArrayItem("ListOfB")]
List<B> list1;

[XmlArrayItem("ListOfC")]
List<C> list2;

NSystem NotSystem { get; set; }
}

编辑:

Enum 属性默认使用包含 XML 元素的属性名称及其作为 XML 值的枚举值进行序列化,即如果示例中的属性 NotSystem 具有值 C 它将被序列化为

<NotSystem>C</NotSystem>

当然,您始终可以通过进行适当的注释来更改属性序列化的方式,即使用 [XmlAttribute] 将其序列化为属性,或者 [XmlElement("Foobar")] 所以它使用 Foobar 作为元素名称进行序列化。 MSDN 上提供了更广泛的文档,请查看上面的链接。

关于c# - 如何序列化 List<T>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5005900/

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