У меня есть куча DataGrids в моем приложении. Мне нужно переопределить некоторый защищенный виртуальный метод для всех из них. Есть ли что-то лучше, чем использование производного класса DataGrid с не так знакомым именем? Я хотел бы, чтобы решение, подобное прикрепленному свойству, могло указывать на поведение с заданными свойствами.Переопределение защищенного виртуального без наследования
ответ
Вы должны переопределить. Переопределите метод в вашем собственном MyOwnDataGrid (или более коротком имени). Затем используйте этот класс, если вы используете datagrid. Если у вас есть сотни решеток, у вас должен быть нечетный дизайн приложения. Если вы не хотите изменять каждое место, где вы создаете new DataGrid()
, я считаю, что вы можете изменить директивы using.
using DatGrid = My.NameSpace.MyOwnDataGrid;
Вы все еще должны сделать это для каждого файла, используя DataGrids, и это делает код немного запутанным, чтобы читать, так что я думаю, что лучше просто глобальный поиск/замена в «новой DataGrid (» в «new MyOwnDataGrid (« и вы закончили ».
Спасибо, но все мои DataGrid определены в XAML, а не новинкой. – vkrzv
ОК. Замена должна работать нормально и в XAML. –
В C# вы не можете переопределить метод, не наследуя от этого метода. MSDN-Override. Единственный способ переопределить метод - наследовать от этого базового класса. Есть ли причина, по которой вы не хотите наследовать базовый класс?
- 1. Переопределение не виртуального наследования в C++
- 2. множественное наследование без виртуального наследования
- 3. наследования C++ защищенного
- 4. Переопределение защищенного метода
- 5. заказ конструктора виртуального наследования
- 6. Как избежать виртуального наследования
- 7. Каково практическое использование защищенного наследования?
- 8. Переопределение метода экземпляра без наследования в PHP?
- 9. Какова цена виртуального наследования?
- 10. C++ разница виртуального наследования
- 11. Задача виртуального наследования C++
- 12. C++ Виртуального Наследования
- 13. Виртуального наследования неоднозначной функция
- 14. Переопределение виртуального метода
- 15. Понимание наследования и переопределение
- 16. Реализация защищенного/частного наследования компилятор
- 17. Предотвращение виртуального и переопределения в цепочке наследования
- 18. объяснить метод наследования переопределение
- 19. переопределение функции наследования C++
- 20. Влияние виртуального наследования на производительность
- 21. Функции наследования и виртуального члена
- 22. виртуального множественного наследования и литья
- 23. виртуального наследования от базовой структуры
- 24. Ошибка виртуального наследования в MSVC
- 25. скрывает детали реализации посредством использования защищенного виртуального
- 26. Непонимание ООП для виртуального и защищенного набора
- 27. Полиморфное поведение без виртуального
- 28. C++: объединение двух типов без наследования виртуального базового класса
- 29. Переопределение свойств и проблема наследования
- 30. CSS переопределение при использовании наследования
Я не уверен, что понимаю, что вы спрашиваете. Не могли бы вы перефразировать вопрос? –
Что случилось с наследованием в этом случае? Не проблема, которую вы не можете назвать своей производный класс DataGrid, но должен выбрать другое имя? Если да, подумайте о том, как странно было бы, чтобы разброс одинаково названных классов делал все по-другому. – Alan
Что я хочу сделать, это исправить WPFToolkit DataGrid странно b ug http://stackoverflow.com/questions/4017786/wpf-recursive-call-to-automation-peer-api-is-not-valid I.e. переопределить OnCreateAutomationPeer(). Но я не хочу делать изменения во всем коде приложения. Я не думаю, что это означает, что DataGrid будет делать разные. Я просто пытаюсь избавиться от странного исключения. – vkrzv