我正在编写用于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 type, Boolean directReference) at System.Xml.Serialization.XmlReflectionImporter.ImportTypeMapping(Type type, XmlRootAttribute root, String defaultNamespace) at System.Xml.Serialization.XmlSerializer..ctor(Type type, String defaultNamespace) at System.Xml.Serialization.XmlSerializer..ctor(Type type)
为什么必须有一个无参构造函数才能使 XML 序列化成功?
编辑:感谢 cfeduke 的答案。该无参构造函数可以是私有的或者是内部的。