[英]How to invoke with reflection a method that accepts a Func<> parameter?
当我尝试在MethodInfo.Invoke
的数组中添加Func<>
参数时,它给我的错误是它无法将方法组转换为 object。
我该如何处理?
方法的签名:
static bool Something(Func<Expression, Expression, BinaryExpression> body)
我正在传递的内容:
MethodInfo.Invoke(null, new object[] { Expression.Subtract }); // compilation error
CS0428 无法将方法组“减去”转换为非委托类型“对象”。 您是否打算调用该方法?
确实没有从方法组到object
的转换,但是有从方法组到兼容委托类型的转换( 方法组转换),也有从委托类型到object
的转换。 因此,您可以首先使用强制转换将方法组转换为Func<Expression, Expression, BinaryExpression>
,然后可以将其隐式转换为object
:
someMethodInfo.Invoke(null, new object[] { (Func<Expression, Expression, BinaryExpression>)Expression.Subtract });
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.