¿Puedo usar Expression <Func <T, bool >> y ver de manera confiable a qué propiedades se hace referencia en Func <T, bool>?

Estoy escribiendo algo con el sabor deEnumerable.Where en eso toma un predicado de la formaFunc<T, bool>. Si el subyacenteT implementosINotifyPropertyChanged, Me gustaría ser un poco más inteligente al reevaluar el predicado.

Estoy pensando en cambiarlo para usarExpression<Func<T, bool>>, y luego usando el árbol de expresión para averiguar qué propiedades se usan en el predicado. Entonces puedo tener miPropertyChanged manejador ser un poco más inteligente.

Mi pregunta: ¿es factible? Si el predicado es simple (p. Ej.x => x.Age > 18), entonces laExpression Parece tener todo lo que necesito. ¿Hay escenarios en los que no pueda ver a qué propiedades se hace referencia?

Respuestas a la pregunta(2)

Su respuesta a la pregunta