Tôi có hai cây biểu được định nghĩa như thế này:Đi qua một cây biểu hiện như một tham số khác cây biểu
private Expression<Func<TEntity, TPropertyResult>> PropertyAccessor { get; set; }
và
private Expression<Func<TPropertyResult, bool>> TestExpression { get; set; }
tôi cần phải tạo ra một cây biểu thức mới mà sẽ cho kết quả tương đương với:
var expression = p => this.TestExpression(this.PropertyAccessor(p));
Khi sử dụng Expression.Invoke(this.TestExpression, this.PropertyAccessor)
, tôi gặp lỗi sau
{"Expression of type 'System.Func`2[MyEntity,System.String]' cannot be used for parameter of type 'System.String'"}
TPropertyResult
là một chuỗi trong khi thử nghiệm.
Tôi đã thử sử dụng Expression.Call
hoặc Expression.Invoke
. Không may mắn. Tôi nên sử dụng cái gì?
lỗi biên dịch là gì? Ngoài ra, mã không thể đọc được. Bạn có chắc chắn rằng công cụ .Net 2.0 không đủ cho những gì bạn muốn hoàn thành? –
Khi sử dụng Invoke, nó nói: '{" Biểu thức kiểu 'System.Func'2 [MyEntity, System.String]' không thể được sử dụng cho tham số kiểu 'System.String' "}'. Đó là khi tôi cố gắng xác định một chuỗi là 'TPropertyResult', nhưng vấn đề không bị giới hạn trong một chuỗi. –