Saya menulis kode untuk melakukan serialisasi Xml. Dengan fungsi di bawah ini.
public static string SerializeToXml(object obj)
{
XmlSerializer serializer = new XmlSerializer(obj.GetType());
using (StringWriter writer = new StringWriter())
{
serializer.Serialize(writer, obj);
return writer.ToString();
}
}
Jika argumen adalah turunan dari kelas tanpa konstruktor tanpa parameter, ia akan melempar pengecualian.
Pengecualian Tidak Tertangani: System.InvalidOperationException: CSharpConsole.Foo tidak dapat diserialisasi karena tidak memiliki konstruktor tanpa parameter. di System.Xml.Serialization.TypeDesc.CheckSupported () di System.Xml.Serialization.TypeScope.GetTypeDesc (jenis Type, MemberInfo sumber Referensi langsung Boolean) di System.Xml.Serialization.XmlReflectionImporter.ImportTypeMapping (tipe Type, XmlRootAttribute root, String defaultNamespace) di System.Xml.Serialization.XmlSerializer..ctor (tipe type, String defaultName space) di System.Xml.Serationization. XmlSerializer..ctor (Jenis tipe)
Mengapa harus ada konstruktor tanpa parameter untuk memungkinkan serialisasi xml berhasil?
EDIT: terima kasih atas jawaban cfeduke. Konstruktor tanpa parameter dapat bersifat pribadi atau internal.
XmlSerializer
membutuhkan konstruktor tanpa parameter default untuk deserialisasi.