我在无法修改的库中提供了类型,例如:
namespace BaseNamespace
{
public class A
{
public string Foo { get; set; }
}
}
我还有一个名为 SomeOtherNamespace.A" 的类,它派生自 BaseNamespace.A,如下所示:
namespace SomeOtherNamespace
{
public class A : BaseNamespace.A
{
public string DoSomething() {}
}
}
从 Web 服务中,我收到一个 XML 有效负载。
我想反序列化 XML,以便最终得到 SomeOtherNamespace.A 对象。但是,当我运行以下代码时
string xml = "<A Foo=\"test\"></A>";
XmlSerializer serializer = new XmlSerializer(typeof(A));
StringReader reader = new StringReader(xml);
A obj = serializer.Deserialize(reader) as A;
我收到一个错误:
类型“BaseNamespace.A”和“SomeOtherNamespace.A”都使用命名空间“”中的 XML 类型名称“A”。使用 XML 属性为类型指定唯一的 XML 名称和/或命名空间。
问题:如果不修改 BaseNamespace.A 类,如何强制反序列化为派生类型 SomeOtherNamespace.A?