2012-07-25 84 views
2

想我也該泛型方法如何獲取泛型方法的類型參數?

void ActivateView<T>(ViewCommand command) where T : IPresenter 
{ 
    //code 
} 

而且我有一個動作是:

Action<ViewCommand> action = this.ActivateView<DiagnosticPresenter>; 

現在給出action,我怎麼能知道是什麼類型arument的通用方法ActivateView?在這種情況下,它應該是DiagnosticPresenter。所以我期待的Type等於一個實例typeof(DiagnosticPresenter)爲:

Type type = Magic(action); //what should Magic do? 
if (type == typeof(DiagnosticPresenter)) 
{ 
    //I want to do something here! 
} 

這可能嗎?我應該如何實施Magic()

回答

3

這似乎爲我工作:

public Type Magic(Action action) 
{ 
    return action.Method.GetGenericArguments().First(); 
} 
+0

是。我經過一番探索才發現我自己。不管怎麼說,還是要謝謝你。它只是證實了它。 – Nawaz 2012-07-25 13:13:19

相關問題