繁体   English   中英

如何通过反射调用接受 Func<> 参数的方法?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM