[英]How to create C# class instance from a static method return value?
我尝试使用XDocument
(XML Linq)保存和加载类。 为此,我有两种方法:
static MyClass FromXml(XElement data); //calls 0-parameter constructor inside
public XElement ToXml();
这样的构造函数
public MyClass(XElement data)
{
this = MyClass.FromXml(data);
}
不起作用(说这是只读的)。 可以以某种方式完成此操作(无需创建从返回值手动复制每个字段的操作)吗?
还是这个主意错了?
将代码从FromXml
移至构造函数应该可以,但是保存和加载将放在两个地方,或者构造函数不会全部放在一个地方...
我认为您需要这样的东西:
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
作为参数传递。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.