Есть ли какой-либо ярлык в С# (VS 2008) для автоматического внедрения виртуальных и абстрактных методов базового класса в производном классе?
Автоматическое создание реализаций методов базового класса
Ответ 1
Для виртуальных методов вы можете ввести override
, а затем пробел. Intellisense предложит вам список вариантов.
Для абстрактных методов и свойств вы можете использовать смарт-тег в базовом классе или интерфейсе (также, Ctrl + . или Shift + Alt + F10 покажет меню смарт-тегов) для создания конкретных элементов.
Например, в следующем фрагменте кода вы можете поместить каретку в конце INotifyPropertyChanged
и нажать Ctrl + ., чтобы выбрать "Использовать интерфейс", а событие PropertyChanged
будет добавлено в MyClass
:
class MyClass : INotifyPropertyChanged
{
}
Ответ 2
Просто введите интерфейс, который вы хотите реализовать, а затем нажмите "Смарт-тег", появится контекстное меню, а затем вы можете явно выбрать интерфейс реализации или реализовать интерфейс:
Все члены, подлежащие переопределению, будут содержаться в области кода, которая названа так, чтобы отражать ее цель.
Все члены будут иметь строку, которая выбрасывает NotImplementedException
.
Ответ 3
Для виртуальных методов введите переопределить, введите пробел, и intellisense покажет вам все методы, которые можно унаследовать.
Ответ 4
Не думайте, что это существовало, когда задавался исходный вопрос, но, по крайней мере, с VS 2013, вы можете автоматически создавать заглушки для абстрактных методов и свойств. Просто щелкните правой кнопкой мыши на имени абстрактного класса (в определении вашего класса) и выберите "Реализовать абстрактный класс". Так же, как и CMS, с автоматическим интерфейсом.
Ответ 5
Как уже упоминалось выше, смарт-тег (через Ctrl+.
и Alt+Shft+F10
) решит вашу проблему, однако Visual Studio имеет раздражающую опцию, которая автоматически обертывает сгенерированные свойства/методы в таком регионе:/p >
#region INotifyPropertyChanged members
...
#endregion
Вы можете включить эту функцию, перейдя в Tools > Options > Text Editor > C# > Advanced
. Существует флажок Implement Interface > Surround generated code with #region
. Просто убедитесь, что он не установлен.