Скрытие методов интерфейса в Intellisense в Visual Studio - PullRequest
3 голосов
/ 15 января 2012

У меня есть интерфейс, и у него много методов. Я не должен видеть эти методы в Intellisense при реализации классов. Как я могу это сделать?

Ответы [ 2 ]

6 голосов
/ 15 января 2012

Вы можете использовать EditorBrowsableAttribute в своих методах.

EditorBrowsableAttribute Указывает, что свойство или метод отображается в редакторе.EditorBrowsableAttribute - это подсказка для дизайнера, указывающая, нужно ли отображать свойство или метод.Вы можете использовать этот тип в визуальном дизайнере или текстовом редакторе, чтобы определить, что видно пользователю.Например, ядро ​​IntelliSense в Visual Studio использует этот атрибут, чтобы определить, показывать ли свойство или метод.

Что-то вроде

   [EditorBrowsable(EditorBrowsableState.Never)]
   public void GetId()
   {
   }
5 голосов
/ 15 января 2012

Вам нужно будет реализовать их явно.

Если ваш интерфейс:

interface IFoo{
  void DoSomething();
}

, вы можете явно реализовать это в классе, как показано ниже:

class Foo : IFoo {
  void IFoo.DoSomething();
}

При этом, вы, вероятно, задаетесь вопросом, почемуВы хотите сделать это.Интерфейс часто используется для определения договора о том, на что способен объект данного типа.Желание скрыть это может быть запахом чего-то, что сбивается с пути в процессе проектирования.Конечно, есть также много действительных случаев использования явной реализации.Например, в словаре есть явные реализации для нескольких методов из IEnumerable>.но сокрытие должно быть скорее исключением, чем правилом.

Если вы объявите переменную / член типа интерфейса, методы будут показаны, если вы объявите член / переменную конкретного типа, который они не покажут.Поскольку вы, как правило, предпочитаете интерфейсы конкретным классам, это опять-таки подсказка, что вы, возможно, захотите взглянуть на причину желания скрыть методы, объявленные интерфейсом

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...