Трюк IHideObjectMembers
(a.k.a IFluentInterface
) может быть использован, например. в быстрых реализациях интерфейса, чтобы скрыть System.Object
членов от IntelliSense. (Если вы не знаете этого трюка, вы можете прочитать его по приведенной выше ссылке; я просто повторяю обычное объявление интерфейса здесь :)
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();
}
Теперь я могу скрывать элементы System.Object
другого типа следующим образом:
public class SomeClass : IHideObjectMembers { ... }
или:
public interface ISomeInterface : IHideObjectMembers { ... }
Я пробовал это в VS 2008 Express и VS 2008 Standard. Тем не менее, никто не скрывается от IntelliSense вообще. Я использовал EditorBrowsableAttribute
в разных проектах, и он всегда работал хорошо; однако это не работает в этом конкретном сценарии.
Если бы все работало так, как ожидалось, я бы увидел только метод SomeMethodTwo
.
Я что-то упустил?
P.S.: Вы можете вывести мой пример кода из объявлений и скриншота. У меня есть класс SomeClass
с единственным фиктивным методом, который называется SomeMethodTwo
. Очень простой. Я не реализовал повторно четыре метода System.Object
в этом классе, так как в этом не должно быть необходимости.