XmlSerializer使用默认构造函数的正确方法是什么?

时间:2016-12-24 16:28:24

标签: c# xml xml-serialization

你可以帮我找一个错误吗? 我试图使用XmlSerialize:

public static void ProcessLines(List<string> allLines, out pfm pfm)
    {
        ...
        pfm = newPfm;
        pfm forseril = new pfm("");
        XmlSerializer mySerializer = new XmlSerializer(typeof(pfm));
        StreamWriter myWriter = new StreamWriter("myFileName.xml");
        mySerializer.Serialize(myWriter, forseril);
        myWriter.Close();

    }

以下是我认为应该是默认构造函数的东西:

 [Serializable]
    [XmlRoot(ElementName = "Pfm", Namespace = null)]
    public class pfm
    {

        public pfm(string data)
        {
            this.data = data;
        }

        public string data;

        public Ctl ctl
        {
            get;
            set;
        }

        [XmlAttribute(AttributeName = "Name")]
        public string Name
        {
            get;
            set;
        }

    }

我使用了Microsoft网站上的一个istruction:instruction

1 个答案:

答案 0 :(得分:0)

XmlSerializer需要的是无参数构造函数 - 没有参数的constructor。因此,您的pfm需要一个构造函数,如下所示:

public class pfm
{
    pfm() : this("") { }

    public pfm(string data)
    {
        this.data = data;
    }
}

不需要公开。样本fiddle