[英]Can you call a class' method when you declare the object?
我有一個類,我聲明它,但該類作為項添加到另一個更大的類。 有沒有辦法在與調用相同的語句中調用Init()
方法? 與調用構造函數時定義公共屬性/變量類似。 我不想在構造函數中調用Init()
方法,因為它與WPF Designer混淆。
FitsView fv = new FitsView();
fv.Init();
您可以使用靜態函數來執行此操作:
public static FitsView CreateFitsView()
{
var fv = new FitsView();
fv.Init();
return fv;
}
然后你只需調用靜態函數而不是new FitsView()
您還可以嘗試將自定義事件掛接到FitsView,如果它知道何時可以初始化它?
並像這樣使用它:
FitsView fv = new FitsView();
fv.someCustomEvent += (o,e) => { fv.Init(); };
與StringBuilder.Append
類似,您可以更改Init以返回對該對象的引用。
Public FitsView Init()
{
//Do stuff
return this;
}
然后:
FitsView fv = new FitsView().Init();
如果設計人員因為你的init方法而出現問題,我可以想到兩個原因:
Init
方法中所做的事情需要你的應用程序的位置(讀取資源或文件或使用硬件) Init
方法需要動態加載一些外部程序集。 首先,您可能需要檢查:
此處的人也指出了這個bug,請注意(在winforms中托管wpf): https ://connect.microsoft.com/VisualStudio/feedback/details/620001/system-componentmodel-designerproperties-getisindesignmode-does-not-work- 如果最WPF的是托管式-A-WinForm的#標簽
對於第二個問題,你可以將你的Init
方法包裝在另一個假設的InitWrapper
然后檢查包裝方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.