我需要在元素列表{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 });