Expression.Call“包含”方法抛出“模糊匹配找到异常”

时间:2018-09-21 03:27:20

标签: c# reflection .net-core

.net core 2.1

这是我的代码

//call class Expression 's method
public static MethodCallExpression Call(Expression instance, MethodInfo method, params Expression[] arguments);  
//service code
var parameter = Expression.Parameter(typeof(T), "x")
var property = Expression.Property(parameter, "Name");
var value = Expression.Constant("xx");
var converted = Expression.Convert(value, property.Type);
var exp = Expression.Call(property, property.Type.GetMethod("Contains"), converted);

//then will throw Ambiguous match found exception

.net core 2.1中有4种方法,.net framework中有1种方法,如何在.net core 2.1中进行修复,可以在.net framework中运行

.net核心中的

方法 https://i.stack.imgur.com/vNcks.png

.net框架中的

方法 https://i.stack.imgur.com/nTvEp.png

1 个答案:

答案 0 :(得分:2)

您已经注意到,有多种方法与名称Uncaught TypeError: e.setTimeout is not a function 相匹配。您应该使用GetMethod()的以下overload,它可以让您指定方法的类型参数。

Contains