Я пишу код для серіалізації 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 (Тип типу, MemberInfo sourc e, Булева директна референція, Boolean castOnError) на System.Xml.Serialization.ModelScope.GetTypeModel (Тип Булева пряма довідка) на System.Xml.Serialization.XmlReflectionImporter.ImportTypeMapping (Тип типу, XmlRootAttribute root, String defaultNamespace) у System.Xml.Serialization.XmlSerializer..ctor (Тип типу, Простір String defaultName) на System.Xml.Serialization. XmlSerializer..ctor (тип типу)
Чому повинен бути конструктор без параметрів, щоб дозволити серіалізацію xml для успіху?
EDIT: дякую за відповідь cfeduke Конструктор без параметрів може бути приватним або внутрішнім.
XmlSerializer
для десеріалізації потрібен конструктор без параметрів за замовчуванням.