我有以下课程:
public class Response<T>
{
public string Status { get; set; }
public T GenericType { get; set; }
}
public class Order
{
public string Number { get; set; }
}
public class Customer
{
public string Name { get; set; }
}
并希望得到:
var r = new Response<Order>();
r.GenericType = new Order { Number = "1" };
序列化后的xml:
<Response><Order><Number>1</Number></Order></Response>
和for:
var r = new Response<Customer>();
r.GenericType = new Customer { Name = "Kowalski" };
序列化后的xml:
<Response><Customer><Name>Kowalski</Name></Customer></Response>
有可能吗?
非常感谢。
马立克
答案 0 :(得分:4)
您可以使用IXmlSerializable
覆盖XmlSerializer
的工作方式。
这样,您就可以获得正在寻找的输出。
答案 1 :(得分:0)
感谢Pieter的回答。
是的,我实现了IXmlSerializable
接口,WriteXml
对象的Reponse
方法如下:
public void WriteXml(XmlWriter writer)
{
writer.WriteRaw(string.Format("<Status>{0}</Status>", Status));
var xml = GenericType.Serialize();
writer.WriteRaw(xml);
}
Serialize()
扩展名是一种通用方法,用于序列化任何对象。
谢谢,
马立克