The IHideObjectMembers
trick (a.k.a IFluentInterface
) se pueden utilizar, p. en implementaciones de interfaz fluidas para ocultar System.Object
miembros de IntelliSense. (Si usted no sabe este truco, puede leer sobre ella a través del enlace de arriba, yo sólo estoy repitiendo la declaración habitual de la interfaz de aquí :)VS IntelliSense - IFluentInterface/IHideObjectMembers truco no funciona. ¿Por qué?
using System;
using System.ComponentModel;
[EditorBrowsable(EditorBrowsableState.Never)]
public interface IHideObjectMembers
{
[EditorBrowsable(EditorBrowsableState.Never)] bool Equals(object obj);
[EditorBrowsable(EditorBrowsableState.Never)] int GetHashCode();
[EditorBrowsable(EditorBrowsableState.Never)] Type GetType();
[EditorBrowsable(EditorBrowsableState.Never)] string ToString();
}
ahora estoy supone que es capaz de ocultar System.Object
miembros en otro tipo de la siguiente manera:
public class SomeClass : IHideObjectMembers { ... }
o:
public interface ISomeInterface : IHideObjectMembers { ... }
Probé este tanto en VS 2008 Express y VS 2008 Standard. Sin embargo, ningún miembro está oculto de IntelliSense en absoluto. He usado el EditorBrowsableAttribute
en diferentes proyectos y siempre funcionó bien; sin embargo, no funciona en este escenario particular.
http://i48.tinypic.com/vhb4fq.jpg
Si las cosas hubieran funcionado como se esperaba, me habría sólo han visto el método SomeMethodTwo
.
¿Echo de menos algo?
P.S .: Usted puede inferir mi código de ejemplo de las declaraciones y la captura de pantalla. Tengo una clase SomeClass
con un solo método ficticio llamado SomeMethodTwo
. Muy simple. Tengo no reimplementado los cuatro métodos System.Object
en esta clase, ya que esto no debería ser necesario.
En las últimas versiones de Visual Studio (2015, 2017) , 'IHideObjectMembers' /' IFluentInterface' se vuelve inútil por un error de Roslyn; ver https://github.com/dotnet/roslyn/issues/4434. – stakx