Tengo una interfaz fluida para un proceso de registro de contenedores de IoC, y esta contiene algunas clases que se utilizan para crear los registros.Ocultando GetHashCode/Equals/ToString de las clases de interfaz fluida intellisense en Visual Studio para C#?
Por ejemplo, puedo hacer esto:
builder.Register<IFoo>().From.ConcreteType<Foo>();
Sin embargo, en cada etapa después de un punto, intellisense pops arriba que muestra los cuatro métodos estándar a partir de la clase Object, GetHashCode, iguales, GetType, y ToString.
Intenté sobreescribir estos métodos en algunas de las clases, adjuntando el atributo EditorBrowsableAttribute a cada una de ellas, pero siguen apareciendo. ¿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 he intentado en la clase que se devuelve desde 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 funcionaba. ¿Hay algo más que pueda probar?
También intenté agregar un nuevo método, no reemplazado desde 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í.
Interesante, la documentación del EditorBrowsableState dice claramente * Por ejemplo, el motor IntelliSense en Visual Studio nunca muestra métodos o propiedades que están marcados como Nunca. * Intenté en un pequeño proyecto de prueba y obtuve los mismos resultados que usted. Incluso si selecciono "Ocultar miembros avanzados" y uso 'EditorBrowsableState.Advanced', el miembro seguirá apareciendo en la lista. Impar. –
Encontré la respuesta, voy a editar la pregunta. –
Buen hallazgo. Nunca no siempre es nunca. –