我希望能够存储函数引用并忽略参数,直到它实际被使用。
这是我希望它看起来的样子:
StoreType f=MyFunction;
.......
var r=f.Invoke(arg1,arg2,arg3) as ReturnType;
这有点像 Action 和 Func,但它们是强类型的,我希望能够声明和使用这种类型,而无需精确知道函数将采用多少参数和什么类型。
我如何在 C# 中做到这一点?
我希望能够存储函数引用并忽略参数,直到它实际被使用。
这是我希望它看起来的样子:
StoreType f=MyFunction;
.......
var r=f.Invoke(arg1,arg2,arg3) as ReturnType;
这有点像 Action 和 Func,但它们是强类型的,我希望能够声明和使用这种类型,而无需精确知道函数将采用多少参数和什么类型。
我如何在 C# 中做到这一点?
您可以使用较旧的delegate
语法。
public delegate ReturnType MyFunction(string arg1, int arg2, ...);
var result = MyFunction.Invoke(arg1, arg2, ...);
For the argument count, just pass an array of object containing the arguments.
f.Invoke(new object[]{ arg1, args2, args3, ... });
For the type use the method
Convert.ChangeType(objectToConvert, destinationType);
Should work for me :)