4 Stimmen

Wie man den Wert eines Lambda MemberExpression erhalten

Gegeben ein Lambda-Ausdruck:

Define(Expression<Func<T, int>> property)

und verwendet wie:

Define(x => x.Collection.Count)

Was ist die beste Methode, um den Wert von Count zu ermitteln? Gibt es einen einfachen Weg mit dem Expression Tree oder sollte ich Reflection verwenden, um den Baum zu analysieren und die PropertyInfo und GetValue() zu erhalten?

4voto

Denis Troller Punkte 7331

Sie können Folgendes verwenden, um einen Delegaten zu erhalten, der Ihrem Lambda entspricht:

var propDelegate = property.Compile();
var count = propDelegate(...);

propDelegate wird ein Func<T, int> und Sie können es aufrufen, indem Sie das gewünschte Objekt vom Typ T übergeben.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X