2010-04-01 30 views
4

如何創建一個Action方法作爲參數使用以下函數?執行方法和動作<T>使用反射參數

public void When(Action<T> action) 
{ 
    if (internalValue != null) 
     action(internalValue); 
} 

我有一個MethodInfo的方法和參數的類型,像這樣:

var methods = value.GetType().GetMethods(); 
MethodInfo mInfo = methods.First(method => method.Name == "When"); 
Type parameterType = (mInfo.GetParameters()[0]).ParameterType; 

但在那之後我不知道如何進行實際操作方法傳遞的說法,我也不知道如何定義Action方法體。

+1

那麼你想要做什麼? – 2010-04-01 09:30:18

+0

類似於: 動作 action = a => { string internalValue = a.ToString()。ToUpper(); ... ... } – JGr 2010-04-01 09:34:38

+1

「類似的東西」不是很精確。當你想通過反思調用這些信息時,你有什麼信息? – 2010-04-01 09:37:25

回答

2
mInfo.Invoke(value, 
    delegate(<TheRuntimeTypeOf T> aTinstance) 
    { 
     // do something on a T 
    }); 

但請記住,您失去了通用性。