Kann ich Expression <Func <T, bool >> verwenden und zuverlässig sehen, auf welche Eigenschaften in Func <T, bool> verwiesen wird?

Ich schreibe etwas im Geschmack vonEnumerable.Where in das nimmt ein Prädikat der FormFunc<T, bool>. Wenn das zugrunde liegendeT implementiertINotifyPropertyChanged, Ich möchte das Prädikat etwas intelligenter neu bewerten.

Ich denke darüber nach, es zu ändern, um @ zu verwendExpression<Func<T, bool>> und dann mithilfe der Ausdrucksbaumstruktur herausfinden, welche Eigenschaften im Prädikat verwendet werden. Dann kann ich mein @ habPropertyChanged Handler ein bisschen intelligenter sein.

Meine Frage: ist das machbar? Wenn das Prädikat einfach ist (z. B.x => x.Age > 18), dann ist dieExpression scheint alles zu haben, was ich brauche. Gibt es Szenarien, in denen ich nicht sehen kann, auf welche Eigenschaften verwiesen wird?