Ich schreibe Code für die XML-Serialisierung. Mit unten stehender Funktion.
public static string SerializeToXml(object obj)
{
XmlSerializer serializer = new XmlSerializer(obj.GetType());
using (StringWriter writer = new StringWriter())
{
serializer.Serialize(writer, obj);
return writer.ToString();
}
}
Wenn das Argument eine Klasseninstanz ohne parameterlosen Konstruktor ist, wird eine Ausnahme ausgelöst.
Nicht behandelte Ausnahme: System.InvalidOperationException: CSharpConsole.Foo kann nicht serialisiert werden, da es keinen parameterlosen Konstruktor gibt. unter System.Xml.Serialization.TypeDesc.CheckSupported () unter System.Xml.Serialization.TypeScope.GetTypeDesc (Typtyp, MemberInfo-Quelle, Boolean directReference, Boolean throwOnError) unter System.Xml.Serialization.ModelScope.GetType Boolesche direkte Referenz) unter System.Xml.Serialization.XmlReflectionImporter.ImportTypeMapping (Typ type, XmlRootAttribute root, String defaultNamespace) unter System.Xml.Serialization.XmlSerializer..ctor (Typ type, String defaultName space) unter System.Xml.Serialization. XmlSerializer..ctor (Typ Typ)
Warum muss es einen parameterlosen Konstruktor geben, damit die XML-Serialisierung erfolgreich ist?
EDIT: Danke für die Antwort von cfeduke. Der parameterlose Konstruktor kann privat oder intern sein.
XmlSerializer
erfordert einen standardmäßigen parameterlosen Konstruktor für die Deserialisierung.