我有以下来自 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
)。有人可以指出我正确的方向吗?