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

精灵鲍勃

当我尝试Func<>在 的数组中添加参数时MethodInfo.Invoke,它给我的错误是它无法将方法组转换为对象。

我该如何处理?

方法的签名:

static bool Something(Func<Expression, Expression, BinaryExpression> body)

我正在传递的内容:

MethodInfo.Invoke(null, new object[] { Expression.Subtract }); // compilation error

CS0428 无法将方法组“Subtract”转换为非委托类型“object”。您是否打算调用该方法?

扫地机

确实没有从方法组到转换object,但是有从方法组到兼容委托类型的转换方法组转换),也有从委托类型到 的转换因此,您可以首先使用强制转换将方法组转换为,然后可以隐式转换为objectFunc<Expression, Expression, BinaryExpression>object

someMethodInfo.Invoke(null, new object[] { (Func<Expression, Expression, BinaryExpression>)Expression.Subtract });

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用Func类型的Expression作为参数调用方法

使用反射识别方法中的Func <>参数

如何修复以func作为参数的.NET方法?

在 Func 委托中调用 Func 委托的方法

从Powershell调用带有Expression <Func>参数的C#方法

如何使用 Func<string, T> 作为参数之一调用方法

如何将 Func<T> 传递给方法参数

如何评估作为参数传递给方法的Func / Delegate / Expression?

如何使Func <>的某些参数可选?

使用反射将 Func<T,bool> 作为参数传递?

在Linq to Entity中使用Func作为通用方法参数

javascript:将参数传递/接受给func

如何在 Func() 中调用类方法

如何使用反射来调用与原始参数的方法?

如何使用反射调用带有参数的方法?

如何调用需要带有lambda Expression参数的Func <T>的方法

C#通过参数中的Expression<Func<TEntity,object>>反射获取方法

使用反射使用数组参数调用方法

PHP:在版本5.4中使用构造数组或func_get_args()调用反射方法之间的差异令人困惑

调用方法时如何传递参数(反射)?

接受Expression <Func <T >>表达式作为参数的扩展方法

反射:使用通用参数调用方法

Java反射-使用int [] []参数调用方法

如何为matplotlib FuncAnimation定义func参数

在 Swift 中对类参数使用类 func

在 Func 委托中使用 List 作为参数

如何使用Func <>创建linq扩展方法?

如何使用Func <>返回方法的引用?

F#代码调用包含Func参数的ac#方法的行为异常