ラムダ式でメソッドを呼び出すジェネリック ラッパー クラスの作成に苦労しています。
コードは次のようになります。
ラッパー クラス:
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' がスコープ '' から参照されていますが、定義されていません。
これを行う方法はありますか?