Tôi đang viết mã để thực hiện tuần tự hóa Xml. Với chức năng dưới đây.
public static string SerializeToXml(object obj)
{
XmlSerializer serializer = new XmlSerializer(obj.GetType());
using (StringWriter writer = new StringWriter())
{
serializer.Serialize(writer, obj);
return writer.ToString();
}
}
Nếu đối số là một thể hiện của lớp không có hàm tạo không tham số, nó sẽ đưa ra một ngoại lệ.
Ngoại lệ chưa được xử lý: System.InvalidOperationException: CSharpConsole.Foo không thể được tuần tự hóa vì nó không có hàm tạo không tham số. tại System.Xml.Serialization.TypeDesc.CheckSupported () tại System.Xml.Serialization.TypeScope.GetTypeDesc (Type type, MemberInfo sourc e, Boolean directReference, Boolean throwOnError) tại System.Xodel Tham chiếu trực tiếp Boolean) tại System.Xml.Serialization.XmlReflectionImporter.ImportTypeMapping (Kiểu loại, gốc XmlRootAttribution, String defaultNamespace) tại System.Xml.Serialization.XmlSerializer..ctor (Loại, mặc định. XmlSerializer..ctor (Loại loại)
Tại sao phải có một hàm tạo không tham số để cho phép xml serialization thành công?
EDIT: cảm ơn câu trả lời của cfeduke. Các constructor tham số có thể là riêng tư hoặc nội bộ.
XmlSerializer
yêu cầu một hàm tạo không tham số mặc định để khử lưu huỳnh.