2012-04-02 14 views
3

私はXMLSerialiserを使ってXMLにシリアライズされたクラスの階層を持っています。これを行うには、すべての具体的な型を[XmlInclude]と宣言しています。例えば。xsi:type = ""で使用されるXML文字列を指定する方法はありますか?

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

public class Derived : Base 
{ 
} 

派生としてシリアライズされますのインスタンス:

<Base xsi:type="Derived" /> 

は、どのような方法があり、クラス名以外の何かに型テキストを変更?例えば:

<Base xsi:type="Fred" /> 

答えて

2

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

[XmlType(TypeName = "Fred")] 
public class Derived : Base 
{ 
} 
+0

ブリル、ありがとう。 :) – GazTheDestroyer

1

XmlType attributeを使用します。

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

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

Baseを使用してDerivedオブジェクトをシリアル化するときこれはあなたの希望xsi:typeを与えますシリアライザ。私のテストプログラムの出力:

<Base xsi:type="Fred"/> 
関連する問題