为 XmlSerializer 使用默认构造函数的正确方法是什么?
What's correct way to use default constructor for XmlSerializer?
你能帮我找出一个错误吗?
我正在尝试使用 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 站点的说明:instruction
XmlSerializer
需要的是 无参数构造函数 -- 没有参数的 constructor。因此,您的 pfm
需要一个构造函数,如下所示:
public class pfm
{
pfm() : this("") { }
public pfm(string data)
{
this.data = data;
}
}
不需要public。示例 fiddle.
你能帮我找出一个错误吗? 我正在尝试使用 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 站点的说明:instruction
XmlSerializer
需要的是 无参数构造函数 -- 没有参数的 constructor。因此,您的 pfm
需要一个构造函数,如下所示:
public class pfm
{
pfm() : this("") { }
public pfm(string data)
{
this.data = data;
}
}
不需要public。示例 fiddle.