我有幾個Control
如ToolStripMenuItem
和Button
需要有一個函數綁定到他們的點擊事件。他們將生成新的Form
或將TabPage
添加到當前的TabControl
。我可能會得到幾個不同的Control
,它們需要相同的功能,所以我想到了創建一個全局函數庫。全局函數庫
我將有一個名爲Services
類看起來像這樣:當程序啓動和全球存儲,因此它可以在任何地方訪問
public class Services {
TabControl container;
delegate void fonction(int id);
Dictionary<string, fonction> functions = new Dictionary<string, fonction>();
public Services(TabControl control) {
container = control;
InitFunctions();
}
public Delegate Getfunction(string name) {
if (functions.ContainsKey(name))
return functions[name];
else
throw new NotImplementedException("Failed to instantiate " + name);
}
// List of all the desired functions
// Function example
private void ProductLoan(int id) {
string name = "Loan"+id.ToString();
Form newForm = new Loan();
newForm.Text = Properties.Resources.MakeLoan;
newForm.ShowDialog();
}
private void InitFunctions() {
fonction f = new fonction(ProductLoan);
functions.Add("Loan", f);
// For each functions
// f = new fonction(name);
// functions.Add(name, f);
}
}
這個類實例化。 糾正我,如果我錯誤地繼續這樣做,但我沒有使Services
類爲靜態,因爲它需要有一個TabControl
的實例並初始化函數列表。
我不知道如果這是一個好主意,所以我希望得到一些建議。
您可以在加載時將靜態分配'TabControl'一次。我更喜歡靜態成員做「通用事物」 – lcssanches
有趣,但我仍然需要初始化函數列表。儘管「服務」類可能是飽和的,因爲不需要參數。我唯一擔心的是任何程序員都可以嘗試獲得一個函數,即使他沒有分配TabControl。我想確保使用'Services'的唯一方法是當它具有TabControl實例/引用並初始化函數列表時。 –
我編輯了你的標題。請參閱:「[應該在其標題中包含」標籤「](http://meta.stackexchange.com/questions/19190/)」,其中的共識是「不,他們不應該」。 –