2012-07-25 145 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

相关问题