当我尝试在 Func<>
的数组中添加 MethodInfo.Invoke
参数时,它给了我无法将方法组转换为对象的错误。
我该如何处理?
方法的签名:
static bool Something(Func<Expression, Expression, BinaryExpression> body)
我正在传递的内容:
MethodInfo.Invoke(null, new object[] { Expression.Subtract }); // compilation error
CS0428 无法将方法组“Subtract”转换为非委托类型“object”。您是否打算调用该方法?
答案 0 :(得分:2)
确实没有从方法组到 object
的转换,但是有从方法组到兼容委托类型 (method group conversions) 的转换,并且还有从将类型委托给 object
。因此,您可以先使用强制转换将方法组转换为 Func<Expression, Expression, BinaryExpression>
,然后可以将其隐式转换为 object
:
someMethodInfo.Invoke(null, new object[] { (Func<Expression, Expression, BinaryExpression>)Expression.Subtract });