3
我試圖序列化一個在元素文本中使用的布爾對象,並且我面對一個非常奇怪的行爲。 我得到一個錯誤與下面的代碼:當繼承一個類時使用XMLTextAttribute
[XmlRoot]
public class A
{
}
public class B : A
{
[XmlText]
public bool value = false;
}
和序列化
using (StreamWriter sw = new StreamWriter("test.xml"))
{
B b = new B();
XmlSerializer serializer = new XmlSerializer(typeof(B));
serializer.Serialize(sw, b);
}
例外的細節:
「有反射式「ConsoleApplication2.B錯誤「
和內部異常說:
「無法序列化'ConsoleApplication2.B'類型的對象。考慮從System.Boolean改變XMLTEXT構件「ConsoleApplication2.B.value」的類型爲字符串或字符串數組「
更改類定義是這樣的:
public class B
{
[XmlText]
public bool value = false;
}
或這樣的:
[XmlRoot]
public class A
{
}
public class B : A
{
public bool value = false;
}
,甚至是這樣的:
[XmlRoot]
public class A
{
}
public class B : A
{
[XmlText]
public string value = "false";
}
它序列化正確,但在第一種情況下,我失去了繼承,在第二種情況下,值是在另一個元素,而不是在文本中,在最後一個我失去了字符串的類型。
有誰知道我錯過了什麼?