Sto scrivendo codice per eseguire la serializzazione Xml. Con la funzione di seguito.
public static string SerializeToXml(object obj)
{
XmlSerializer serializer = new XmlSerializer(obj.GetType());
using (StringWriter writer = new StringWriter())
{
serializer.Serialize(writer, obj);
return writer.ToString();
}
}
Se l'argomento è un'istanza di classe senza costruttore senza parametri, genererà un'eccezione.
Eccezione non gestita: System.InvalidOperationException: CSharpConsole.Foo non può essere serializzato perché non ha un costruttore senza parametri. at System.Xml.Serialization.TypeDesc.CheckSupported () at System.Xml.Serialization.TypeScope.GetTypeDesc (Type type, MemberInfo sourc e, Boolean directReference, Boolean throwOnError) at System.Xml.Serialization.ModelScope.GetTypeModel (Type, Riferimento diretto booleano) su System.Xml.Serialization.XmlReflectionImporter.ImportTypeMapping (Tipo di tipo, radice XmlRootAttribute, String defaultNamespace) su System.Xml.Serialization.XmlSerializer..ctor (Tipo di tipo, String defaultName space) su System.Xml.Serialization. XmlSerializer..ctor (Tipo di tipo)
Perché deve esistere un costruttore senza parametri per consentire la serializzazione XML?
EDIT: grazie per la risposta di cfeduke. Il costruttore senza parametri può essere privato o interno.
XmlSerializer
richiede un costruttore senza parametri predefinito per la deserializzazione.