【问题标题】:Dynamically invoke method in c#在c#中动态调用方法
【发布时间】:2013-03-04 15:36:44
【问题描述】:

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

这是我想要的样子:

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

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

如何在 C# 中做到这一点?

【问题讨论】:

  • 只是出于兴趣:您如何知道实际调用该方法时需要哪些参数?
  • 我没有。这取决于最终用户
  • 他怎么会知道?您可能会意识到,目前还不清楚您要实现的最终目标。每当做某事很难,首先要问自己:我这样做对吗?
  • 这将是脚本语言的一部分
  • @ArsenZahray - 如果它是您计划编写的脚本语言的一部分,那么严格来说它不是 C# 问题。

标签: c# reflection delegates


【解决方案1】:

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

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

对于类型使用方法

Convert.ChangeType(objectToConvert, destinationType);

应该对我有用:)

【讨论】:

    【解决方案2】:

    您可以使用旧的delegate 语法。

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

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

    【讨论】:

      猜你喜欢
      • 2015-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多