0
私が使用しているデータソースは、常にxsi:typeを持つ同じ親クラス(xmlのモデル)を持つデータを送信して、クラスの実際の型を判別します。これは、xsi:型に名前空間を追加するまでうまくいきました。今では、私が何を試しても、それを逆転させません。ここでxmlを複数の名前空間で非直列化
はXMLです:
<ModelResource xmlns:ot="http://www.example.com/otSpace">
<Models xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance xsi:type="ot:myChildClass">
Stuff here
</Models>
</ModelResource>
ルートノード
[XmlRoot("ModelResource")]
public class XmlRoot
{
[XmlElement("Models")]
public List<BaseObject> Bases { get; set; }
}
親クラス
[XmlInclude(typeof(MyChildClass))]
public abstract class BaseObject
{
}
子クラス
[XmlType(TypeName = "myChildClass", Namespace = "http://www.example.com/otSpace")]
public class MyChildClass : BaseObject
{
}
私はこのXMLをデシリアライズするとき、私はエラーで羽目になる:
{「指定されたタイプが認識されませんでした:名= 『myChildClass』、名前空間= 『http://www.example.com/otSpace』、で」}の
感謝あなたの助け。
ありがとうございます!親の名前空間を明示的に ""に設定すると欠けている部分です。今は、MyChildClassがその名前空間に属しているのに、そのプロパティの名前空間がその名前空間に属していないので、それらを明示的に ""設定する必要があるという事実にも対処しなければなりません。 – JumboMaximus