Как вы автоматически реализуете интерфейс на C #?

Ранее в Visual Studio, если вы объявляли класс с интерфейсом, вы могли поместить курсор на интерфейс, щелкнуть его правой кнопкой мыши и выбрать Реализовать интерфейс. (См. здесь по аналогичному вопросу для VS 2008.)

Я начал работать над проектом, в котором определены многочисленные интерфейсы, которые будут использоваться с SimpleInjector. Теперь, когда я начинаю писать свои классы обслуживания, я заметил, что пункт меню Реализовать интерфейс исчез.

Как я могу реализовать все необходимые заглушки методов, как в VS 2008?

Извините, если это дубликат, но я нигде не смог найти этот ответ.


ИЗМЕНИТЬ ЗАПИСИ - 17 августа 2018 г.

Это был горячий вопрос на протяжении многих лет. Я обновил заголовок и теги для этого, чтобы он охватывал все соответствующие версии C # и Visual Studio.

В конечном итоге это был НЕУДАЧНЫЙ кодер с моей стороны. Как и классы, интерфейсы, генерируемые VS, не определяются как public. Вам придется вручную изменить объявление интерфейса с помощью аксессора public, поскольку VS не добавляет его автоматически. Этот шаг легко забыть, потому что вам не нужно устанавливать модификаторы членов в интерфейсе, поскольку по определению все они будут public.


person RLH    schedule 24.07.2013    source источник
comment
msdn.microsoft.com/en-us/library/tx1s9z1w.aspx кажется, все еще там   -  person Paolo Falabella    schedule 25.07.2013
comment
К вашему сведению, эта функция также существует в VS2010. На самом деле я не пробовал использовать его в VS2012, поскольку обычно я не использую эту функцию слишком часто, поэтому я не могу комментировать, есть она или нет. Но по моему опыту, если у вас есть другие ошибки компиляции в вашем коде одновременно или отсутствуют соответствующие ссылки на сборку, иногда такие параметры не появляются, потому что он не может понять, что это такое или что вы делаете.   -  person Chris Sinclair    schedule 25.07.2013
comment
У меня работает как всегда. Интерфейс агрегата - это первый пункт контекстного меню, доступный при щелчке правой кнопкой мыши по названию интерфейса. VS2012 точно.   -  person Wiktor Zychla    schedule 25.07.2013
comment
Я хочу реализовать интерфейс IComparable в 2010 VS, но по-прежнему не показывает синий тег ... Черт возьми! При отладке ошибок тоже нет. Что мне здесь не хватает? Нашел проблему. Есть два типа интерфейсов. Один для типобезопасности с использованием Generics, а другой для небезопасного типа. Мне пришлось использовать безопасный тип, чтобы увидеть синий тег. Но я сомневаюсь, почему так?   -  person bonCodigo    schedule 15.05.2014


Ответы (3)


Это не изменилось. Все, что вам нужно сделать, это навести указатель мыши на имя интерфейса в классе, и должна появиться синяя полоса подчеркивания, предоставляющая вам варианты реализации интерфейса. Если синее подчеркивание не отображается, убедитесь, что интерфейс доступен для тех сборок и пространств имен, на которые вы ссылаетесь.

person Cam Bruce    schedule 24.07.2013
comment
Ах, провал с моей стороны. Это произошло из-за ошибки, которую я допустил при определении интерфейса. Я не получал никаких предупреждений от Intellisense. Я исправил интерфейс, и появилась выпадающая опция из объявления интерфейса. - person RLH; 25.07.2013
comment
@RLH: Могу я предположить? public class IMyInterfaceIAccidentallyDeclaredAsAClass { }? - person Chris Sinclair; 25.07.2013
comment
Ага. Я всегда получаю искаженное заявление. Интерфейс должен быть определен как публичный, методы не имеют публичного / частного объявления. - person RLH; 25.07.2013
comment
Синяя линия может (VS 2013) отображаться под именем класса (а не под интерфейсом), но вы все равно можете щелкнуть правой кнопкой мыши интерфейс и выбрать реализацию - он работает точно так же - person Joezer; 12.08.2015

Если вы посмотрите на название интерфейса, вы увидите небольшое синее подчеркивание:

первое изображение

Если вы наведете на него курсор, появится раскрывающееся меню, позволяющее реализовать интерфейс:

второе изображение

person Curtis Rutland    schedule 24.07.2013

Поместите курсор где-нибудь в тексте интерфейса (часть после двоеточия) и нажмите Ctrl +.

person Sinaesthetic    schedule 24.07.2013