2012-07-22 71 views
0

我試圖做的是:通靜態動作作爲參數

public static Action<string> action_thread_ended { get; private set; } 

public static void action_set(Action<string> target, Action<string> source) 
{ 
    target += source; 
} 

使用(不同類)

MyClassName.action_set(MyClassName.action_thread_ended, Console.WriteLine); 

結果:沒有

我當然想這樣做可以避免必須爲類中的每個Action創建一個action_set函數。

這可能嗎?

回答

0

代表是不可變的。

target += source創建一個新的委託實例,並使target參數引用它。
您傳遞的屬性不受影響。

+0

是的,我意識到這一點,現在正在尋找一種方法來實現這一目標。 – natli 2012-07-22 14:25:35

+1

沒有辦法讓這個工作。 – SLaks 2012-07-22 14:25:46

+0

'get this to work'我的意思是我正在尋找一個允許Action <>的父類添加方法的函數,而不需要在函數內部明確定義Action <>。因此,外部類選擇要添加方法的父類的Action <>,然後父類執行'action + = method;'。這可以防止任何外部類通過執行'action = method;'來覆蓋所有Action的方法,同時不會強迫我爲每個Action <>在父代中創建一個新的設置函數。沒有辦法做到這一點? (對於我糟糕的補償感到抱歉。) – natli 2012-07-22 14:31:31