我正在尋找適當和優雅的方式來創建具有類型化回調的介體/訂戶體系結構。傳遞代理作爲中介/訂戶模式的參數
讓我們假設我有一個「事件」,即代表一類:
public class E
{
public delegate void SomethingHappened (float a, int b);
public delegate void ProgressFinished (int[] c);
}
現在我想創建一個Mediator類,將註冊回調到這些代表和調度回調與提供的參數:
public class Mediator
{
public static void Register (???, Action callback)
{
// supplied delegate += callback
}
public static void Dispatch (???, params object[] list)
{
// executing supplied delegate with params: delegate(list)
}
}
所以,我可以用它的方式如下:
// Class A:
Mediator.Register (E.SomethingHappened, OnSomethingHappened);
private void OnSomethingHappened (float a, int b)
{
//..........
}
// Class B:
Mediator.Dispatch (E.SomethingHappened, 0.1f, 'qwe');
現在牛逼他的問題是我無法將委託作爲參數傳遞給Register或Dispatch。我該如何解決這個問題?
我想你誤會了與會代表。委託*是*回調(或者可以用作它) - 您不會使用委託註冊回調*。也許你實際上是在尋找事件呢? –
我編輯了你的標題。請參閱:「[應該在其標題中包含」標籤「](http://meta.stackexchange.com/questions/19190/)」,其中的共識是「不,他們不應該」。 –
@JonSkeet:我相信OP想基於它的委託類型註冊一個具體的回調方法,但不知道如何將委託類型傳遞給方法 – Groo