Почему XML-сериализуемому классу нужен конструктор без параметровC#

Место общения программистов C#
Anonymous
Почему XML-сериализуемому классу нужен конструктор без параметров

Сообщение Anonymous »

Я пишу код для сериализации 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 не может быть сериализован
, поскольку у него нет
конструктора без параметров. at
System.Xml.Serialization.TypeDesc.CheckSupported()
at
System.Xml.Serialization.TypeScope.GetTypeDesc(Type
type, MemberInfo source, Boolean
DirectReference, Boolean throwOnError)
at
System.Xml.Serialization.ModelScope.GetTypeModel (тип Type
, логическая прямая ссылка) at
System.Xml.Serialization.XmlReflectionImporter.ImportTypeMapping (Type
type , XmlRootAttribute root, String
defaultNamespace) at
System.Xml.Serialization.XmlSerializer..ctor(Type
type, String defaultName space) at
System.Xml.Serialization.XmlSerializer..ctor(Type
type)


Почему в порядке должен быть конструктор без параметров чтобы обеспечить успешную сериализацию XML?

РЕДАКТИРОВАТЬ: спасибо за ответ cfeduke. Конструктор без параметров может быть частным или внутренним.

Подробнее здесь: https://stackoverflow.com/questions/267 ... onstructor

Вернуться в «C#»