Ben lambda ifadelerle yöntemlerini arayacak genel sarmalayıcı sınıf oluşturmak için mücadele ediyorum ifadelerde.lambda'da yöntemlerini arayacak genel sarmalayıcı sınıf oluşturmak
kod şuna benzer:
Sarıcı Sınıfı:
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());
}
}
sarılır sınıfı:
public class Person
{
public int GetPersonById(int bbb)
{
return bbb;
}
}
görüşmeyi yaptım Yer:
var serviceWrapper = new Service<Person>(new Person());
serviceWrapper.Call(x =>x.GetPersonById(2),Console.WriteLine);
sanırım Bu kodu çalıştırdığınızda
ben bu istisna olsun .. yöntem ifadeye "örneği" dir nesnenin örneğini atatch zorunda ama nasıl bilmiyorum:
'Değişken x' türündeki 'AsynCtry.Person '' kapsamından başvurulan', ancak tanımlı değil.
bunu yapmanın bir yolu var mı?
Evet ... O inşaat :) Çok teşekkürler –