在c#中动态调用方法

时间:2013-03-04 15:36:44

标签: c# reflection delegates

我希望能够存储函数引用并忽略参数,直到实际使用它为止。

这就是我想要它的样子:

StoreType f=MyFunction;
.......
var r=f.Invoke(arg1,arg2,arg3) as ReturnType;

这有点像Action和Func,但是那些是强类型的,我希望能够声明并使用这种类型,而无需准确知道函数将采用多少参数和类型。

我如何在c#中执行此操作?

2 个答案:

答案 0 :(得分:1)

对于参数count,只需传递一个包含参数的对象数组。

f.Invoke(new object[]{ arg1, args2, args3, ... });

对于类型,请使用方法

Convert.ChangeType(objectToConvert, destinationType);

应该对我有用:)

答案 1 :(得分:1)

您可以使用较旧的delegate语法。

public delegate ReturnType MyFunction(string arg1, int arg2, ...);

var result = MyFunction.Invoke(arg1, arg2, ...);