2012-04-02 12 views
3

我有一個使用XMLSerialiser序列化爲XML的類的層次結構。爲此,我使用[XmlInclude]來聲明所有具體類型。例如。任何方式來指定在xsi中使用的XML字符串:type =「」?

[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

Brill,謝謝。 :) – GazTheDestroyer 2012-04-02 15:37:20

1

使用XmlType attribute

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

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

使用Base序列化Derived對象時,這會給你想要的xsi:type串行器。我的測試程序輸出:

<Base xsi:type="Fred"/> 
相關問題