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.TypeDesc.CheckSupported() で System.Xml.Serialization.TypeScope.GetTypeDesc (型の種類、MemberInfo ソース、ブール値の directReference、ブール値の throwOnError) で System.Xml.Serialization.ModelScope.GetTypeModel (型の種類、 System.Xml.Serialization.XmlReflectionImporter.ImportTypeMapping(Type type , XmlRootAttribute root, String defaultNamespace) の Boolean direct Reference) System.Xml.Serialization.XmlSerializer..ctor(Type type, String defaultName space) の System.Xml.Serialization. XmlSerializer..ctor(型 type)
xml シリアル化を成功させるために、パラメーターなしのコンストラクターが必要なのはなぜですか?
編集: cfeduke の回答に感謝します。パラメーターなしのコンストラクターは、プライベートまたは内部にすることができます。