2010-04-01 48 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 
    }); 

但请记住,您失去了通用性。

相关问题