次のように、変更できないライブラリでタイプが提供されています。
namespace BaseNamespace
{
public class A
{
public string Foo { get; set; }
}
}
BaseNamespace.Aから派生したSomeOtherNamespace.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に逆シリアル化を強制するにはどうすればよいですか?