如何将函数调用转换为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)
{
}

非常感谢您的帮助:)

如何将函数调用转换为MethodCallExpression

这就是您想要的:

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);
}
相关文章:
  • 没有找到相关文章