2016-12-24 34 views
0

你能帮我找到一个错误吗? 我试图使用XMLSERIALIZE:使用XmlSerializer默认构造函数的正确方法是什么?

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; 
     } 

    } 

我以前从微软网站的istruction:instruction

回答

0

XmlSerializer要求的是无参数构造函数 - 不带参数的constructor。因此你的pfm需要一个构造函数如下:

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

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

它不需要公开。样品fiddle

+0

嗨!现在它可以工作。非常感谢您的帮助 –

相关问题