これは、オブジェクトのシリアル化に使用しているシリアライザーの実装によって異なります。
これを試してみると、期待どおりの結果が得られます。
using System.IO;
using System.Numerics;
using System.Runtime.Serialization.Formatters.Soap;
public class Test {
public static void Main() {
var c = new Complex(1, 2);
Stream stream = File.Open("data.xml", FileMode.Create);
SoapFormatter formatter = new SoapFormatter();
formatter.Serialize(stream, c);
stream.Close();
}
}
代わりに、System.Xml.Serialization
名前空間でクラスを使用すると、投稿したものと同様の結果が得られます。
using System;
using System.IO;
using System.Numerics;
using System.Xml.Serialization;
public class Test {
public static void Main() {
var c = new Complex(1, 2);
XmlSerializer s = new XmlSerializer(typeof(Complex));
StringWriter sw = new StringWriter();
s.Serialize(sw, c);
Console.WriteLine(sw.ToString());
}
}
m_real
これは、XmlSerializerがプライベートメンバーを(構造体のようm_imaginary
に)シリアル化しないという事実によるものだと思いますComplex
。