我正在開發中,我有兩個組的一個類庫:分配「操作」的對象
A)幾個類與一組函數,或者「行動」,已經寫在代碼
B)必須「配置」幾類時實例化,在某種程度上,使用我的圖書館用戶可以從該第二組的類實例化對象,並從第一組「指定」動作
眼下我正在使用代表,如下所示:
Somwhere在代碼中,我聲明,是由一個使用了一些代表和B:
public delegate void Action03(int value);
然後我有「行動」,在A組中實現:
public Delegates.Action03 DoSomething03 = delegate(int value) { [code to execute when this action is specified on the constructor] };
最後,我們使用的構造函數,如下面以實例從B組,我們作爲參數傳遞代表/我們要的是行動對象:
public SomethingGroupB(Delegates.Action03 act03) { ... }
那麼當然,我們可以通過實例化代表作爲參數對象:
SomethingGroupB somthg1 = new SomethingGroupB(GrpA01.DoSomething03);
但整個的一點是,我們可以實例相似的對象,但分配不同的操作:
SomethingGroupB somthg2 = new SomethingGroupB(GrpA07.DoSomething03);
SomethingGroupB somthg3 = new SomethingGroupB(GrpA01.DoSomething01);
SomethingGroupB somthg4 = new SomethingGroupB(GrpA02.DoWhatever);
所以......作爲總結,我想有預編碼(在我的圖書館)操作,並且用戶必須在實例化時選擇分配給新對象的操作,並且這些操作不會更改。
我想我也可以用事件做到這一點,但我並不需要添加和刪除「動作」,他們是固定的類型B的每個對象的整個生命
所以我的問題是:是否有比我用代表實現的更好,更好,更清潔的解決方案?
非常感謝!
非常感謝。 'System.Action'看起來像是正確的解決方案,但是......必須返回值的動作/代表怎麼辦? –
Felko
2012-03-07 17:21:57
@Felko你可以使用'System.Func','System.Func '等。 –
2012-03-07 18:33:37