微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 如何将函数调用转换为MethodCallExpression

我正在努力为我的用户提供便利的库.

我有一个接口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);
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐