Почему 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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