如何从静态方法返回值创建C#类实例
本文关键字:实例 创建 返回值 静态方法 | 更新日期: 2023-09-27 17:59:49
我尝试使用XDocument
(XMLLinq)来保存和加载类。为此,我有两种方法:
static MyClass FromXml(XElement data); //calls 0-parameter constructor inside
public XElement ToXml();
像这样的构造函数
public MyClass(XElement data)
{
this = MyClass.FromXml(data);
}
不起作用(说这是只读的)。这能以某种方式完成吗(而不需要创建从返回值手动复制每个字段)
或者这个想法是错误的
将代码从FromXml
移动到构造函数应该可以,但保存和加载将在两个地方,或者构造函数不会全部在一个地方。。。
我认为您不想要构造函数;您想要一个返回类型MyClass的静态工厂方法。看起来您已经使用方法FromXml实现了这一点。如果您真的想要的话,您可以随时编写一个复制构造函数来接收MyClass的另一个实例。
我想你需要这样的东西:
public class MyClass
{
public MyClass() {}
public MyClass(XElement data)
{
loadXml(this, data);
}
public static MyClass LoadXml(data)
{
var output = new MyClass();
loadXml(output, data);
return output;
}
private static void loadXml(MyClass classToInitialize, XElement data)
{
// your loading code goes here
}
}
您可以创建一个非公共方法static MyClass FromXml(XElement data, MyClass instance)
,该方法使用data
填充传入的instance
。然后,您可以从构造函数调用它,将this
作为参数传递。