我們將對象序列爲xml:雙屬性將不被序列化到XML
public class Test: INotifyPropertyChanged
{
public virtual string Name {get; set;}
public virtual double TestScore {get; set;}
}
使用下面的方法:
public static XElement ToXElement<T>(this object obj)
{
using (var memoryStream = new MemoryStream())
{
using (TextWriter streamWriter = new StreamWriter(memoryStream))
{
var xmlSerializer = new XmlSerializer(typeof(T));
xmlSerializer.Serialize(streamWriter, obj);
return XElement.Parse(Encoding.UTF8.GetString(memoryStream.ToArray()));
}
}
}
在下面的上下文中(代碼是在64上下文中運行,一個。 net庫是從C++庫中調用的):
XDocument rootElement = ...
Test test = new Test();
test.Name = "xxx";
test.TestScore= 1.0d;
rootElement.Add(test.ToXElement());
所有類型的屬性(string,bool,long,int,us hort等)被序列化,除了雙重屬性。一旦他們手動轉換成別的東西(不是雙倍),它們就會被序列化。
XML看起來是這樣的:
<Root>
<Test>
<Name>xxx</Name>
</Test>
</Root>
有雙重原因屬性不序列化的原因嗎?
你怎麼知道雙不序列化?你能提供輸出嗎? –
當我運行這段代碼(除了捕獲返回的'XElement'在一個變量中,因爲我沒有'rootElement'),這個元素同時包含Name和TestScore。 –
是的,這也是我期待的,不幸的是在我們的集合(項目,平臺等)中,雙重屬性沒有被序列化。 – BanditoBunny