Tho*_*nes 5 c# generics struct list xmlserializer
我有一个或多或少像这样的结构:
[Serializable]
[XmlRoot("Customer")]
public struct TCustomer
{
string CustomerNo;
string Name;
}
Run Code Online (Sandbox Code Playgroud)
我有时将此结构序列化为XML作为单个对象,它工作正常,但我有时也需要序列化此结构的List <>.
我用它来设置顶级元素名称:
[Serializable]
[XmlRoot("Customers")]
public class CustomerList : List<TCustomer> { }
Run Code Online (Sandbox Code Playgroud)
但是,XmlSerializer坚持要调用每个列表项TCustomer.如何告诉XmlSerializer使用Customer而不是TCustomer?
希望能帮助到你
[XmlType("Customer")]
[XmlRoot("Customer")]
public struct TCustomer
{
public string CustomerNo;
public string Name;
}
Run Code Online (Sandbox Code Playgroud)
该XmlRoot
属性仅适用于根元素,因此TCustomer
在序列化时不适用CustomerList
.
如果没有实现自己的序列化,我认为您不能TCustomer
像Customer
在CustomerList
类中那样更改为序列化.但你可以这样做......
[Serializable]
[XmlRoot("customerList")]
public class CustomerList
{
[XmlArray("customers")]
[XmlArrayItem("customer")]
public List<TCustomer> Customers { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
这应该给你xml类似于:
<customerList>
<customers>
<customer />
<customer />
<customer />
</customers>
</customerList>
Run Code Online (Sandbox Code Playgroud)
这会将您的CustomerList从通用列表中更改,但它允许您控制命名.
感谢所有的答案。然而,我的具体问题的解决方案却很简单:
[XmlRoot("Customers")]
public class Customers
{
[XmlElement("Customer")]
public List<TCustomer> List = new List<TCustomer>();
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6481 次 |
最近记录: |