1
过程中我有一个类,是一个抽象类控制XmlType将元素名称序列化
[XmlInclude(typeof(PostedPayment))]
[XmlInclude(typeof(PostedInvoice))]
[XmlType("VoucherProgress")]
public class PostedJournals : List<APostedJournal>
{
public PostedJournals(IEnumerable<APostedJournal> postedJournals) : base(postedJournals) { }
public PostedJournals() { }
}
但是,当我序列化,我结束了
<VoucherProgress>
<APostedJournal p2:type="PostedPayment" xmlns:p2="http://www.w3.org/2001/XMLSchema-instance">
...
</APostedJournal>
</VoucherProgress>
列表时,我希望它的名字类型,不使用抽象名称
<VoucherProgress>
<PostedPayment>
...
</PostedPayment>
</VoucherProgress>
有没有办法使这项工作具有一些属性?
这将如何使它根据哪个子类实际被序列化来选择正确的名称? – CaffGeek 2011-02-25 00:49:27
你不能。你正在序列化一个泛型类型的列表,它将被用作类型。您唯一的选择就是勾选序列化步骤并使其使用所需的类型。 GetType()将返回实例类型而不是基类型。您也可以创建自己的XmlName属性,只从现有的属性继承,并更改名称的方式。 – 2011-02-25 02:47:43
尝试一下代码。你可以从那里开始。这是一个有趣的挑战。 – 2011-02-26 06:09:50