动态调用列表上的方法



我需要在元素列表{2,3,4}中找到最大值或最小值

 double[] doubleList = { 2, 3, 4 };
 doubleList.Max(); // return 4

如何动态调用正确的方法?

我可以为两个元素实现此功能,如链接
所述http://tutorials.csharp-online.net/Attributes_and_Reflection%E2%80%94Late_Binding

编辑:像这样:

 string methodName = "Min";
  var t = Type.GetType("System.Math");
  MethodInfo genericFunction = t.GetMethod(methodName, types);
  object val = genericFunction.Invoke(t, params);

似乎您正在寻找Enumerable的最小函数而不是Math的最小函数。

double[] doubleList = { 2, 3, 4 };
string methodName = "Min";
var t = typeof(Enumerable);
MethodInfo method = t.GetMethods(BindingFlags.Static | BindingFlags.Public)
                 .Where(m => m.Name == methodName && m.ReturnType == typeof(double))
                 .FirstOrDefault();
object val = method.Invoke(t, new object[]{ doubleList });

相关内容

  • 没有找到相关文章