如何将函数调用转换为MethodCallExpression
本文关键字:MethodCallExpression 转换 函数调用 | 更新日期: 2023-09-27 18:00:37
我正在努力为我的用户方便使用我的库。
我有一个接口I和一个a类。。。
public interface I
{
int f(int i);
}
public class A : I
{
public int f(int i)
{
return i * i;
}
}
我正在尝试编写一个函数Call,它接受对f的调用并进行操作。
static void Main(string[] args)
{
I obj = new A();
Call(obj.f(3));
}
但我不知道如何将函数转换为"调用"函数。我的目标是,调用是通用的,将适用于所有类型!所以我尝试使用MethodCallExpression
,但我真的不知道如何将obj.f(3)转换为MethodCallExpression
。。。。
public void Call(MethodCallExpression expr)
{
}
非常感谢您的帮助:)
这就是您想要的:
static void Main(string[] args)
{
I obj = new A();
Func<A,int> expression = (a => a.f(3))
Call<A>(expression, obj);
}
public void Call<T>(MethodCallExpression expr, T data)
{
expr(data);
}