2015-10-11 88 views
4

我有這樣的:System.Action委託忽略參數?

public event Action<BaseCommodity> OnGatherActionSelected = delegate { }; 
gmp.OnGatherActionSelected += m_Worker.CharacterActions.StartGatherMaterials; // << takes a parameter 

,但現在我想用事件來調用帶0參數

gmp.OnGatherActionSelected += ParentPanel.RedrawUI; // does not take parameters .. DOES NOT WORK :(

我怎麼能做到這一點的方法?

+0

如果你想不帶參數的處理程序,你應該使用'Action'代替'行動' –

+0

我主要需要的參數,只在一個單一的情況下,我想忽略的參數並調用方法...我無法相信,沒有辦法跳過參數 – Cxyda

+0

因此,只要用'obj.YourEvent + = x => yourMethod();'來忽略它,就像Guffa和Charles提供的那樣。 –

回答

5

最簡單的方法是添加一個處理程序,採用參數並忽略它,委託給方法要使用:

gmp.OnGatherActionSelected += _ => ParentPanel.RedrawUI(); 
+0

好吧,這確實很簡單!謝謝 ! – Cxyda

4

您可以在需要的參數的方法把它包裝:

gmp.OnGatherActionSelected += x => ParentPanel.RedrawUI();