Tôi biết tôi có thể tạo cây biểu thức sử dụng:Sử dụng một biểu thức trong một cây biểu hiện trình biên dịch tạo
phương pháp Factory.
Chuyển đổi trình biên dịch biểu thức lambda thành
Expression
.
Đối với cây biểu thức phức tạp, tôi thích 2 vì nó ngắn gọn hơn.
Có thể tham chiếu đến đã được xây dựng Expressions
bằng cách này không?
using System;
using System.Linq.Expressions;
public class Test
{
public static Expression<Func<int, int>> Add(Expression expr)
{
#if false
// works
ParameterExpression i = Expression.Parameter(typeof(int));
return Expression.Lambda<Func<int, int>>(Expression.Add(i, expr), i);
#else
// compiler error, can I pass expr here somehow?
return i => i + expr;
#endif
}
public static void Main()
{
Func<int, int> f = Add(Expression.Constant(42)).Compile();
Console.WriteLine(f(1));
}
}
tôi nghĩ rằng tất cả các bạn cần là để xác định loại biểu hiện trong tiện ích từ Expression để biểu vì tôi nghĩ đó là những gì đang xảy ra trong ví dụ trên nhưng nó được phỏng đoán. –