2012-05-01 10 views
5

Vorrei determinare l'impatto che un cambio di codice all'interno della sovrascrittura di Equals() nella mia classe avrebbe sul codice.Come ignorare le sovrascritture di un metodo quando si cercano tutti i riferimenti

public override bool Equals(object obj) 
    { 
    // My code to be changed 
    return true; 
    } 

Quando faccio SHIFT-F12 per trovare tutti i riferimenti, Visual Studio restituisce 126,703 posti in cui sto chiamando Object.equalsQ().

C'è un modo per saltare le sostituzioni del metodo Equals() quando si cercano riferimenti?

+0

Vedo una domanda simile a http://stackoverflow.com/questions/7399284/c-how-to-find-references-to-equals-operator-for-a-particular-class-in-visual-s – GregC

+1

Mi piace il trucco [Obsoleto] di Mark. – GregC

+0

Tuttavia, "errore CS0809: Avviso come errore: membro obsoleto 'Foo.ToString()' sovrascrive il membro non obsoleto 'object.ToString()'". E se "#pragma warning disabilita 809", l'attributo [Obsoleto] viene ignorato. :-P – yoyo

risposta

5

Poiché il metodo Equals è definito a livello object, un oggetto della classe potrebbe facilmente essere passato a un metodo che chiama Equals sapere niente di più che si tratta di un object.

Ad esempio, se si aggiunge l'oggetto a un hashset o se si chiama .Distinct() su una raccolta che include l'oggetto, si invocherà indirettamente Equals.

L'unico modo per trovare tutti i posti che annullano lo Equals è quello di trovare tutti i luoghi in cui viene utilizzata la classe e vedere cosa viene fatto con esso.

+1

Questo lo spiega perfettamente ... ma ragazzo sono deluso. Ho un sacco di codice da usare ora. –

Problemi correlati