Есть ли какой-либо ярлык в C# (VS 2008) для автоматического внедрения виртуальных и абстрактных методов базового класса в производном классе?Автоматически генерировать реализации методов базового класса
ответ
Для виртуальных методов вы можете ввести override
, а затем пробел. Intellisense должен предложить вам список вариантов.
Для абстрактных методов и свойств, вы можете использовать смарт-тег на базовый класс или интерфейс (также, Ctrl + . или сдвиг + Alt + F10 появится меню смарт-тегов) для создания конкретных предметов.
Например, в следующем фрагменте кода, вы можете поместить курсор в конце INotifyPropertyChanged
и нажмите Ctrl + . для затем выберите Выполнить интерфейс и PropertyChanged
событие будет добавлено в MyClass
:
class MyClass : INotifyPropertyChanged
{
}
Для виртуальных методов типа переопределить, дать пробел и intellisense покажет вам все методы, которые можно унаследовать.
Просто введите интерфейс, который вы хотите реализовать, а затем нажмите на смарт-тега, контекстное меню будет всплывать, а затем вы можете выбрать либо реализовать интерфейс или реализовать интерфейс Явное:
Все члены должны быть переопределены будут содержаться в области кода, которая названа так, чтобы отражать ее цель.
Все участники будут иметь линию, которая выбрасывает NotImplementedException
.
OP рассказывает о выводе класса из базового класса, а не о внедрении интерфейсов. – Kangkan
Как уже упоминалось, смарт-тег (через Ctrl+.
и Alt+Shft+F10
) решит вашу проблему, однако Visual Studio имеет раздражающий вариант, который будет автоматически завернуть сгенерированные свойства/методы с областью, как это:
#region INotifyPropertyChanged members
...
#endregion
Вы можете включить эту функцию, перейдя на Tools > Options > Text Editor > C# > Advanced
. Существует флажок Implement Interface > Surround generated code with #region
. Просто убедитесь, что он не установлен.
Я думаю, что регион очень приятный, поскольку он обозначает методы, связанные с интерфейсом, а также делает всю группу разборчивой. –
Не думайте, что это существовало, когда был задан исходный вопрос, но, по крайней мере, с VS 2013, вы можете автоматически создавать заглушки для абстрактных методов &. Просто щелкните правой кнопкой мыши на имени абстрактного класса (в определении вашего класса) и выберите «Реализовать абстрактный класс». Так же, как и CMS, с автоматическим интерфейсом.
CMS щелкнула «Смарт-тег», крошечную коробку, которая появляется под M в «MyInterface» на его картинке. – Zack
- 1. Как автоматически создавать переопределяющие реализации базового класса?
- 2. Переопределение методов базового класса
- 3. PHPStorm: автоматически генерировать документацию inheritdoc при реализации методов абстрактного родительского класса
- 4. Цепочки методов производного класса для методов базового класса
- 5. Определить реализации базового класса в массиве
- 6. Вызов реализации базового класса из производного?
- 7. C# Фабрика для конкретной реализации базового базового класса
- 8. Может ли PyCharm автоматически генерировать __eq __() и __hash __() реализации?
- 9. Проблема при вызове методов базового класса
- 10. Переопределение методов базового класса в контроллере
- 11. Вызов методов базового класса из InitializeComponent
- 12. Расширение базового класса при сохранении исходных методов
- 13. Вызов базовой реализации аксессора внутри базового класса, получение дочерней реализации
- 14. Как избежать реализации методов из абстрактного класса?
- 15. Автоматически вызывать метод базового класса C++
- 16. Как автоматически генерировать тестовые примеры для методов без параметров?
- 17. Objective-C: вызов немедленной реализации базового класса из производного класса
- 18. Использование методов базового класса из производного класса - ошибка
- 19. Использование методов из производного класса после базового класса cast
- 20. Атрибуты методов/элементов виртуального базового класса в наследовании класса C#
- 21. Наследование python - вызов методов базового класса внутри дочернего класса?
- 22. Реализация абстрактных методов класса с подклассами другого базового класса
- 23. Использование методов базового класса для инициализации членов производного класса
- 24. Использование методов базового класса в методах производного класса
- 25. Переопределение методов без реализации
- 26. Используйте шаблоны для создания методов виртуального базового класса
- 27. перекрытая вызова методов потомков от виртуального деструктора базового класса
- 28. Получение источника автоматически сгенерированных методов класса
- 29. Перегрузка операторов в сгенерированном классе на основе методов базового класса
- 30. Почему виртуальный разрешен при реализации методов интерфейса?
Это хорошо работает для реализации интерфейса. Я хочу получить класс из другого класса, и нет простого способа сделать это. – Kangkan
@ Kangkan: Если у другого класса есть абстрактные методы, он работает так же, как и с интерфейсами. однако, если у него есть виртуальные методы с реализациями, вы должны только переопределить те, которые вам нужны. Я не уверен, что «легкий путь» вам не хватает, но просто введите переопределение и пространство, как указано выше, и это даст вам доступ к доступным методам. Вам не нужно переопределять их все. –
Я хочу добавить дополнительные свойства и методы в свой класс, сохраняя при этом все методы и атрибуты из базового класса. Поэтому я хотел бы получить методы и свойства, реализованные как метод base.method(). – Kangkan