3

を使用してXMLにシリアル化されるクラスの階層がありますXMLSerialiser。これを行うために、私はすべての具象型をで宣言してい[XmlInclude]ます。例えば。

 [XmlInclude(typeof(Derived))]
 public class Base
 {
 }

 public class Derived : Base
 {
 }

Derivedのインスタンスは、次のようにシリアル化されます。

<Base xsi:type="Derived" />

タイプテキストをクラス名以外に変更する方法はありますか?例えば:

<Base xsi:type="Fred" />
4

2 に答える 2

2

私はあなたがそれを次のように行うと思います:

[XmlType(TypeName = "Fred")]
public class Derived : Base
{
}
于 2012-04-02T15:25:01.407 に答える
1

XmlType属性を使用します:

[XmlInclude(typeof(Derived))]
public class Base
{
}

[XmlType("Fred")]
public class Derived : Base
{
}

これにより、シリアライザーを使用してオブジェクトをxsi:typeシリアル化するときに必要なものが得られます。私のテストプログラムの出力:DerivedBase

<Base xsi:type="Fred"/>
于 2012-04-02T15:29:34.007 に答える