У меня есть класс, в котором я его объявляю, но этот класс добавляется как элемент к другому большему классу. Есть ли способ вызвать метод Init() в том же операторе, что и вызов? Аналогично определению общедоступных свойств / переменных при вызове конструктора. Я не хочу вызывать метод Init() в конструкторе, потому что он мешает конструктору WPF.
FitsView fv = new FitsView();
fv.Init();
Ответ 1 · рейтинг 4 · Jon B
Для этого вы можете использовать статическую функцию:
public static FitsView CreateFitsView()
{
var fv = new FitsView();
fv.Init();
return fv;
}
Затем вы просто вызываете эту статическую функцию вместо new FitsView()
Ответ 2 · Joe
Вы также можете попробовать подключить настраиваемое событие к своему FitsView, если он знает, когда он готов к инициализации?
И используйте это так:
FitsView fv = new FitsView();
fv.someCustomEvent += (o,e) => { fv.Init(); };
Ответ 4 · Trisped
Подобно StringBuilder.Append, вы можете изменить Init на вернуть ссылку на объект.
Public FitsView Init()
{
//Do stuff
return this;
}
Потом:
FitsView fv = new FitsView().Init();