Xmlシリアル化を行うコードを書いています。以下の機能付き。
public static string SerializeToXml(object obj)
{
XmlSerializer serializer = new XmlSerializer(obj.GetType());
using (StringWriter writer = new StringWriter())
{
serializer.Serialize(writer, obj);
return writer.ToString();
}
}
引数がパラメーターなしのコンストラクターのないクラスのインスタンスである場合、例外がスローされます。
未処理の例外:System.InvalidOperationException:CSharpConsole.Fooにはパラメーターのないコンストラクターがないため、シリアル化できません。System.Xml.Serialization.ModelScope.GetTypeModel(Type type、System.Xml.Serialization.TypeDesc.CheckSupported()でSystem.Xml.Serialization.TypeScope.GetTypeDesc(Type type、MemberInfo sourc e、Boolean directReference、Boolean throwOnError)でSystem.Xml.Serialization.XmlReflectionImporter.ImportTypeMapping(Type type、XmlRootAttribute root、String defaultNamespace)のSystem.Xml.Serialization.XmlSerializer..ctor(Type type、String defaultName space)のSystem.Xml.Serializationのブール値の直接参照)。 XmlSerializer..ctor(タイプタイプ)
XMLのシリアル化を成功させるために、パラメーターのないコンストラクターが必要なのはなぜですか?
編集:cfedukeの回答に感謝します。パラメーターなしのコンストラクターは、プライベートまたは内部にすることができます。
XmlSerializer
逆シリアル化には、デフォルトのパラメーターなしのコンストラクターが必要です。