如何在没有 ArrayOf 包装器的情况下在 c# 中序列化 List<T>?
How to serialize List<T> in c# without the ArrayOf wrapper?
我正在尝试序列化一些自定义 class 的 List<T>
,其中:
List<T> l = new List<T>();
...
XmlSerializer serializer = new XmlSerializer(l.GetType());
serializer.Serialize(writer, list);
它输出:
<ArrayOfT>
<T>
...
</T>
<T>
...
</T>
</ArrayOfT>
如何得到相同的东西,但没有 ArrayOfT
元素,所以它看起来像:
<T>
...
</T>
<T>
...
</T>
我正在尝试这样做,因为它发生在包装器中 class 所以我的实际输出格式为:
<PropertyName>
<ArrayOfT>
<T>
...
</T>
<T>
...
</T>
</ArrayOfT>
</PropertyName>
并且 ArrayOfT
元素是多余的(逻辑上它与 PropertyName
同名)
您或许可以采用这种方法:
XmlSerializer serializer = new XmlSerializer(l.GetType());
foreach (T item in list)
{
serializer.Serialize(writer, item);
}
这样您序列化的是项目而不是外部对象。
我正在尝试序列化一些自定义 class 的 List<T>
,其中:
List<T> l = new List<T>();
...
XmlSerializer serializer = new XmlSerializer(l.GetType());
serializer.Serialize(writer, list);
它输出:
<ArrayOfT>
<T>
...
</T>
<T>
...
</T>
</ArrayOfT>
如何得到相同的东西,但没有 ArrayOfT
元素,所以它看起来像:
<T>
...
</T>
<T>
...
</T>
我正在尝试这样做,因为它发生在包装器中 class 所以我的实际输出格式为:
<PropertyName>
<ArrayOfT>
<T>
...
</T>
<T>
...
</T>
</ArrayOfT>
</PropertyName>
并且 ArrayOfT
元素是多余的(逻辑上它与 PropertyName
同名)
您或许可以采用这种方法:
XmlSerializer serializer = new XmlSerializer(l.GetType());
foreach (T item in list)
{
serializer.Serialize(writer, item);
}
这样您序列化的是项目而不是外部对象。