metodo - ¿Ocultando GetHashCode/Equals/ToString de las clases de interfaz fluida intellisense en Visual Studio para C#?
método tostring java (2)
Ok, encontré la solución, fue en parte culpa mía, y en parte documentación incompleta.
Mi error fue que no etiqueté todos los métodos en la clase correcta, pero incluso cuando los corrigió, los métodos aún aparecían.
Resulta la nota en la documentación, que dice:
En Visual C #, EditorBrowsableAttribute no suprime miembros de una clase en el mismo ensamblado.
En realidad debería ser (el énfasis es mío):
En Visual C #, EditorBrowsableAttribute no suprime miembros de una clase en la misma solución abierta .
Etiqueté los métodos en la clase apropiada, realicé una reconstrucción completa, creé un nuevo proyecto fuera del archivo de solución, hice referencias de archivos a los archivos compilados de mi proyecto de IoC, y he aquí que los métodos desaparecieron.
Dejaré la pregunta en caso de que alguien más tenga este problema.
Tengo una interfaz fluida para un proceso de registro de contenedores de IoC, y esta contiene algunas clases que se utilizan para construir los registros.
Por ejemplo, puedo hacer esto:
builder.Register<IFoo>().From.ConcreteType<Foo>();
Sin embargo, en cada paso después de un punto, aparece intellisense que muestra los cuatro métodos estándar de la clase Object, GetHashCode, Equals, GetType y ToString.
Traté de sobreescribir estos métodos en un par de clases, adjuntando el atributo EditorBrowsableAttribute a cada uno, pero aún aparecen. ¿No hay forma de que los oculte?
Tenga en cuenta que no estoy tratando de ocultarlos de la clase en sí, solo de intellisense.
Básicamente, me gustaría esto:
+---------------+
builder.Register<IFoo>().|As |
|By |
|Equals | <-- remove this
|From |
|GetHashCode | <-- and this
|GetType | <-- as well as this
|ToString | <-- and finally this
+---------------+
Esto es lo que intenté en la clase que devuelve Register<T>
:
[EditorBrowsable(EditorBrowsableState.Never)]
public override Boolean Equals(Object obj)
{
return base.Equals(obj);
}
[EditorBrowsable(EditorBrowsableState.Never)]
public override Int32 GetHashCode()
{
return base.GetHashCode();
}
[EditorBrowsable(EditorBrowsableState.Never)]
public override String ToString()
{
return base.ToString();
}
Esto claramente no funcionó. ¿Hay algo más que pueda probar?
También intenté agregar un nuevo método, no reemplazado por Object
, y aplicar el mismo atributo a eso, y eso también aparece, así que claramente el atributo no está haciendo lo que pensé que haría.
Noté la nota en la documentación sobre no ocultar cosas del mismo ensamblaje, pero traté de crear un nuevo proyecto y todavía aparecen allí.
Según el thread , es por diseño. Los métodos / propiedades decorados con EditorBrowsable(EditorBrowsableState.Never)
solo se ocultan de intellisense si son parte de una clase que se encuentra en otro conjunto referenciado. El montaje no debe ser parte de la misma solución.