我有一个Conversion
类,如下所示:
public class Conversion
{
public memorySource MSource { get; set; }
public Rule[] Rules { get; set; }
public Conversion(XElement xElement)
{
// I use Rules property here
// From Rules property and xElement parameter i initialize MSource Property
}
public Conversion(ExcelPackage)
{
// Also i use Rules property here
// From Rules property and xElement parameter i initialize MSource Property
}
}
当我想构建Conversion
类的实例时,我这样做:
Conversion cvr = new Conversion(xElement) { Rules = rules };
然后我收到此错误:
对象引用未设置为对象的实例
我知道对象的构造在初始化属性之前就开始了,但有没有办法做反向?
我可以使用Rules属性作为构造函数的参数,但它不适合性能,因为我有几个构造函数。
答案 0 :(得分:2)
是的,只需将值作为参数传递给构造函数。这是唯一的方法:
Conversion cvr = new Conversion(rules, package);
构造函数在哪里:
public Conversion(Rule[] rules, ExcelPackage package)
{
this.Rules = rules;
...
}
您可以为其他构造函数默认rules
参数,因此您不必复制代码:
public Conversion(ExcelPackage package) : this(new Rule[] { ... }, package)
{
...
}