Есть ли способ инициализировать свойства после построения объекта?
У меня есть 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 в качестве параметра конструктора, но оно не подходит для производительности, потому что у меня есть несколько конструкторов.
1 ответ
Решение
Да, просто передайте значение в качестве параметра в конструкторе. Это единственный способ:
Conversion cvr = new Conversion(rules, package);
Где конструктор:
public Conversion(Rule[] rules, ExcelPackage package)
{
this.Rules = rules;
...
}
Вы можете по умолчанию rules
параметр для вашего другого конструктора, поэтому вам не нужно дублировать код:
public Conversion(ExcelPackage package) : this(new Rule[] { ... }, package)
{
...
}