Stworzyłem wyrażenie lambda w czasie wykonywania i chcę go ocenić - jak to zrobić? Po prostu chcę uruchomić wyrażenie samodzielnie, a nie przeciwko jakiejkolwiek kolekcji lub innym wartościom.Uzyskiwanie wyniku Wyrażenie
Na tym etapie, po utworzeniu, widzę, że jest on typu Expression<Func<bool>>
, o wartości {() => "MyValue".StartsWith("MyV")}
.
Pomyślałem, że w tym momencie mogę po prostu zadzwonić pod numer var result = Expression.Invoke(expr, null);
, a otrzymam wynik boolowski. Ale to po prostu zwraca InvocationExpression
, który w debugerze wygląda jak {Invoke(() => "MyValue".StartsWith("MyV"))}
.
Jestem prawie pewna, że jestem blisko, ale nie mogę wymyślić, jak uzyskać mój wynik!
Dzięki.
Thanks dokładnie to, czego mi brakowało. I jasno wytłumaczone też :) – Marcus
@Marcus - Chętnie pomogę! –
Tylko odrobina cukru syntaktycznego. Możesz zastąpić dwie ostatnie linie tylko jedną: Wynik Boolean = expression.Compile()(); –