オブジェクトを 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()));
}
}
}
次のコンテキストでは (コードは x64 コンテキストで実行され、.net ライブラリは C++ ライブラリ内から呼び出されます):
XDocument rootElement = ...
Test test = new Test();
test.Name = "xxx";
test.TestScore= 1.0d;
rootElement.Add(test.ToXElement());
型 (string、bool、long、int、ushort など) のすべてのプロパティは、double プロパティを除いてシリアル化されます。手動で別のものに変換すると(二重ではない)、シリアル化されます。
Xml は次のようになります。
<Root>
<Test>
<Name>xxx</Name>
</Test>
</Root>
double プロパティがシリアル化されない理由はありますか?