2016-12-24 70 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

嗨!現在它可以工作。非常感謝您的幫助 –

相關問題