2
MethodInfo m = typeof(Expression).GetMethod("Lambda", new Type[]{typeof(Expression), typeof(ParameterExpression[])});
我得到:
System.Reflection.AmbiguousMatchException: Ambiguous match found.
这是在努力做到这一点genericly(而不是知道它是一个字符串)
var newExpression = Expression.Lambda<Func<T, string>>(propertyExpression, parameters);
return entities.OrderBy(newExpression);
编辑 :附加信息:
run宁:
typeof(Expression).GetType().GetMethod("GetMethodCandidates", BindingFlags.NonPublic | BindingFlags.Instance).Invoke(typeof(Expression),new object[]{"Lambda", BindingFlags.Static| BindingFlags.Public, CallingConventions.Standard,new Type[]{typeof(Expression), typeof(ParameterExpression).MakeArrayType()},false})
返回数组:
[0]: {System.Linq.Expressions.Expression`1[TDelegate] Lambda[TDelegate](System.Linq.Expressions.Expression, System.Linq.Expressions.ParameterExpression[])}
[1]: {System.Linq.Expressions.Expression`1[TDelegate] Lambda[TDelegate](System.Linq.Expressions.Expression, System.Collections.Generic.IEnumerable`1[System.Linq.Expressions.ParameterExpression])}
[2]: {System.Linq.Expressions.LambdaExpression Lambda(System.Linq.Expressions.Expression, System.Linq.Expressions.ParameterExpression[])}
[3]: {System.Linq.Expressions.LambdaExpression Lambda(System.Linq.Expressions.Expression, System.Collections.Generic.IEnumerable`1[System.Linq.Expressions.ParameterExpression])}
如果您使用typeof(Expression).GetMethods,而不是找到多个,它们又有什么不同? – 2012-08-09 22:29:10
我得到了什么相当于MSDN文档中的方法列表。唯一有迹象的是该方法的通用和非通用版本。但是当我使用MakeGenericType()时,我没有得到静态方法,这正是我所需要的。 – Charlie 2012-08-10 02:29:49
[Select Right Generic Method with Reflection]的可能重复(http://stackoverflow.com/questions/3631547/select-right-generic-method-with-reflection) – nawfal 2014-01-18 05:48:51