我正在尝试为我的用户使用我的库。
我有一个接口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)
{
}
非常感谢您的帮助:)
答案 0 :(得分:1)
这就是你要找的东西:
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);
}