2009-04-02 3 views

ответ

46

Для виртуальных методов вы можете ввести override, а затем пробел. Intellisense должен предложить вам список вариантов.

Для абстрактных методов и свойств, вы можете использовать смарт-тег на базовый класс или интерфейс (также, Ctrl + . или сдвиг + Alt + F10 появится меню смарт-тегов) для создания конкретных предметов.

Например, в следующем фрагменте кода, вы можете поместить курсор в конце INotifyPropertyChanged и нажмите Ctrl + . для затем выберите Выполнить интерфейс и PropertyChanged событие будет добавлено в MyClass:

class MyClass : INotifyPropertyChanged 
{ 
} 
+0

Это хорошо работает для реализации интерфейса. Я хочу получить класс из другого класса, и нет простого способа сделать это. – Kangkan

+0

@ Kangkan: Если у другого класса есть абстрактные методы, он работает так же, как и с интерфейсами. однако, если у него есть виртуальные методы с реализациями, вы должны только переопределить те, которые вам нужны. Я не уверен, что «легкий путь» вам не хватает, но просто введите переопределение и пространство, как указано выше, и это даст вам доступ к доступным методам. Вам не нужно переопределять их все. –

+0

Я хочу добавить дополнительные свойства и методы в свой класс, сохраняя при этом все методы и атрибуты из базового класса. Поэтому я хотел бы получить методы и свойства, реализованные как метод base.method(). – Kangkan

4

Для виртуальных методов типа переопределить, дать пробел и intellisense покажет вам все методы, которые можно унаследовать.

22

Просто введите интерфейс, который вы хотите реализовать, а затем нажмите на смарт-тега, контекстное меню будет всплывать, а затем вы можете выбрать либо реализовать интерфейс или реализовать интерфейс Явное:

enter image description here

Все члены должны быть переопределены будут содержаться в области кода, которая названа так, чтобы отражать ее цель.

Все участники будут иметь линию, которая выбрасывает NotImplementedException.

+1

OP рассказывает о выводе класса из базового класса, а не о внедрении интерфейсов. – Kangkan

1

Как уже упоминалось, смарт-тег (через Ctrl+. и Alt+Shft+F10) решит вашу проблему, однако Visual Studio имеет раздражающий вариант, который будет автоматически завернуть сгенерированные свойства/методы с областью, как это:

#region INotifyPropertyChanged members 
... 
#endregion 

Вы можете включить эту функцию, перейдя на Tools > Options > Text Editor > C# > Advanced. Существует флажок Implement Interface > Surround generated code with #region. Просто убедитесь, что он не установлен.

+1

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

3

Не думайте, что это существовало, когда был задан исходный вопрос, но, по крайней мере, с VS 2013, вы можете автоматически создавать заглушки для абстрактных методов &. Просто щелкните правой кнопкой мыши на имени абстрактного класса (в определении вашего класса) и выберите «Реализовать абстрактный класс». Так же, как и CMS, с автоматическим интерфейсом.

+0

CMS щелкнула «Смарт-тег», крошечную коробку, которая появляется под M в «MyInterface» на его картинке. – Zack

Смежные вопросы