我正在努力创建一个通用包装类,它将使用 lambda 表达式调用方法。
代码如下所示:
包装类:
public class Service<T>
{
private T instance;
public Service(T param)
{
this.instance = param;
}
public void Call<U>(Expression<Func<T, U>> aExpression, Action<U> returnClass)
{
var methodCallExpr = aExpression.Body as MethodCallExpression
var lambdaToFunc = Expression.Lambda(methodCallExpr).Compile();
returnClass((U)lambdaToFunc.DynamicInvoke());
}
}
被包装的类:
public class Person
{
public int GetPersonById(int bbb)
{
return bbb;
}
}
我打电话的地方:
var serviceWrapper = new Service<Person>(new Person());
serviceWrapper.Call(x =>x.GetPersonById(2),Console.WriteLine);
我想我必须将“实例”的对象实例附加到方法表达式中,但我不知道如何..
当我运行这段代码时,我得到了这个异常:
从范围“”引用了“AsynCtry.Person”类型的变量“x”,但未定义。
有没有办法做到这一点?