Tôi đang cố gắng tạo một lớp bao bọc chung chung sẽ gọi các phương thức với các biểu thức lambda.tạo một lớp bao bọc chung chung sẽ gọi các phương thức với các biểu thức lambda
Mã này trông như thế này:
Các Wrapper Class:
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());
}
}
Lớp mà được gói:
public class Person
{
public int GetPersonById(int bbb)
{
return bbb;
}
}
Nơi tôi đã thực hiện cuộc gọi:
var serviceWrapper = new Service<Person>(new Person());
serviceWrapper.Call(x =>x.GetPersonById(2),Console.WriteLine);
Tôi đoán tôi phải atatch trường hợp của đối tượng đó là "dụ" để biểu thức phương pháp nhưng tôi không biết làm thế nào ..
Khi tôi chạy mã này tôi nhận được ngoại lệ này:
Biến ' x 'của loại' AsynCtry.Person 'được tham chiếu từ phạm vi' ', nhưng nó không được xác định.
Có cách nào để thực hiện việc này không?
Yep ... Nó hoạt động :) Thanks a lot –