2012-05-01 5 views
5

Me gustaría determinar el impacto que un cambio de código dentro de la anulación de Equals() en mi clase tendría en el código.Cómo omitir las anulaciones de un método al buscar todas las referencias

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

Cuando yo SHIFT-F12 para encontrar todas las referencias, Visual Studio vuelve 126,703 lugares en los que estoy llamando Object.equals().

¿Hay alguna manera de omitir las anulaciones del método Equals() al buscar referencias?

+0

Veo una pregunta similar en http://stackoverflow.com/questions/7399284/c-how-to-find-references-to-equals-operator-for-a-particular-class-in-visual-s – GregC

+1

Me gusta el truco de Mark [Obsoleto]. – GregC

+0

Sin embargo, "error CS0809: Advertencia como error: el miembro obsoleto 'Foo.ToString()' anula el miembro no obsoleto 'object.ToString()'". Y si "#pragma warning disable 809" se ignora el atributo [Obsolete]. :-P – yoyo

Respuesta

5

Debido a que el método de Equals se define a nivel object, un objeto de la clase podría ser fácilmente pasa a un método que llama Equals saber nada más de que se trata de un object. Por ejemplo, si alguna vez agrega su objeto a un HashSet, o si llama al .Distinct() en una colección que incluye su objeto, estará invocando indirectamente Equals.

La única forma de encontrar todos los lugares sobre los que afectará Equals es encontrar todos los lugares donde se usa su clase y ver qué se hace con ella.

+1

Esto lo explica perfectamente ... pero chico, estoy decepcionado. Tengo un montón de código para analizar ahora. –

Cuestiones relacionadas