c#中动态调用方法

本文关键字:方法 调用 动态 | 更新日期: 2023-09-27 18:02:02

我希望在实际使用之前能够存储函数引用并忽略参数。

我想让它看起来像这样:

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

这有点像Action和Func,但它们都是强类型的,我希望能够声明和使用这种类型,而不需要精确地知道函数将接受多少参数和什么类型。

我如何在c#中做到这一点?

c#中动态调用方法

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

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

对于类型使用

方法
Convert.ChangeType(objectToConvert, destinationType);

应该适合我:)

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

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

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