È possibile sapere se due espressioni sono uguali?Come verificare se due espressioni <Func <T, bool>> sono uguali
Come dato i seguenti quattro espressioni:
Expression<Func<int, bool>> a = x => false;
Expression<Func<int, bool>> b = x => false;
Expression<Func<int, bool>> c = x => true;
Expression<Func<int, bool>> d = x => x == 5;
Poi, almeno si può vedere che:
a == b
a != c
a != d
Ma posso fare qualcosa per scoprirlo nel mio codice?
Ha preso una sbirciatina in MSDN Library, dove si dice che
Equals
: determina se l'oggetto specificato è uguale alla correnteObject
. (Ereditato daObject
.)
che immagino significa che almeno la classe di espressione non ha overrided il metodo equals per diventare equatable? Quindi come lo faresti? O sto chiedendo troppo qui? : p
Se c'è un 'MemberInfo' coinvolto lì, intendo qualche metodo, proprietà di campo, quindi è possibile ottenere il membroinfo per primo e calcolare il suo hash – nawfal