Я пишу код для сериализации 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(Тип type, MemberInfo sourc e, Boolean directReference, Boolean throwOnError) в System.Xml.Serialization.ModelScope.GetTypeModel(Тип type, Boolean direct Reference) в System.Xml.Serialization.XmlReflectionImporter.ImportTypeMapping(Тип type, XmlRootAttribute root, String defaultNamespace) в System.Xml.Serialization.XmlSerializer..ctor(Тип type, String defaultName) на System.Xml.Serialization.XmlSerializer..ctor(Тип тип)
Почему должен быть конструктор без параметров, чтобы обеспечить успешность сериализации XML?
EDIT: спасибо за ответ cfeduke. Конструктор без параметров может быть закрытым или внутренним.