我在这段代码上收到错误(// THIS LINE)。 错误说:无法序列化,因为它们没有无参数构造函数。
public static void SchrijfKlanten(Klant klant, string pad) {
using (FileStream file = File.Open(pad, FileMode.OpenOrCreate)) {
XmlSerializer xml = new XmlSerializer(klant.GetType()); //THIS LINE
xml.Serialize(file, klant);
}
}
我该如何解决这个问题?
答案 0 :(得分:0)
您应该向Klant类添加无参数构造函数:
class Klant
{
public Klant()
{
//Any logic if you have
}
}
答案 1 :(得分:0)
Serializer类需要一个无参数构造函数,以便在反序列化时可以创建一个新实例。之后,它复制从序列化数据中获取的每个公共财产。
如果您想避免在没有参数的情况下创建构造函数,可以轻松地将构造函数设为私有。
EX:
using System;
using System.IO;
using System.Xml.Serialization;
namespace App
{
public class SchrijfKlanten
{
public SchrijfKlanten(Klant klant, string pad)
{
using (FileStream file = File.Open(pad, FileMode.OpenOrCreate))
{
XmlSerializer xml = new XmlSerializer(klant.GetType()); //THIS LINE
xml.Serialize(file, klant);
}
}
private SchrijfKlanten() { }
// cut other methods
}
[Serializable()]
//Ensure there is a parameter less constructor in the class klant
public class Klant
{
internal Klant()
{
}
public string Name { get; set; }
public static String type { get; set; }
public static Type IAm { get; set; }
}
}