【发布时间】:2013-09-23 13:24:45
【问题描述】:
我有以下来自 Web 服务请求的 XML。
<Resource>
<Create>
<Name />
<Reference />
...
</Create>
</Resource>
但是我也可以拥有以下内容。
<Resource>
<Delete>
<Name />
<Reference />
...
</Delete>
</Resource>
我有一个名为 operation 的基类,如下所示:
[XmlInclude(typeof(Create))]
[XmlInclude(typeof(Delete))]
public abstract class Operation
{
protected string Name {get; set;}
protected string Reference {get; set;}
...
}
Create 和 Delete 类都继承自该类,而名为 Resource 的类包含一个 Operation 属性。
public class Resource
{
public Operation {get; set;}
}
我想将 XML 反序列化为 Operation 类的正确具体实现。
我试过了
using (var reader = XmlReader.Create(new StringReader(xmlData)))
{
return (T)new XmlSerializer(typeof(T)).Deserialize(reader);
}
其中T 是Resource 类型但无济于事(Operation 属性始终为null)。有人能指出我正确的方向吗?
【问题讨论】:
标签: c# xml deserialization abstract xmlserializer