Ранее я задавал вопрос об интерфейсах и получил несколько отличных ответов. Я очень рад начать разработку действительно гибкого кода.
Теперь у меня есть вопрос о переопределении виртуального метода.
В настоящее время я работаю с SDK Сервера совместной работы. Одним из элементов управления является «крошечная» хлебная крошка. Таким образом, он будет перечислять «теги» на соответствующем объекте.
<CSBlog:TagBreadCrumb />
Я использую теги, чтобы администраторы могли настраивать таргетинг на определенные места, чтобы содержимое отображалось в макете, однако эти теги не имеют отношения к конечному пользователю. Например, тег «Home_Main» используется для нацеливания на главную панель на домашней странице, но я не хочу, чтобы пользователь видел это.
Поскольку у меня есть SDK для Сервера совместной работы, я нашел элемент управления, который отображает «список тегов», и внес в него изменения, которые делают то, что я хочу, однако, насколько я понимаю, модификация ядра по многим причинам нецелесообразна.
Итак, я хотел бы создать свой собственный элемент управления, который практически на 100% идентичен базовому элементу управления, но перекрывает один метод.
Вот метод:
public virtual string FormatTags(string[] tagList)
Внутри есть код для форматирования тегов, и я хотел бы написать свой собственный код, который выполняет все те же функции, за исключением проверки файла конфигурации на наличие «тегов» для исключения.
Итак, я понимаю, что я создаю свой элемент управления, исходя из базового элемента управления - и я могу написать свой собственный метод FormatTags () - это правильно?
Мне нужно изменить только один его аспект, но означает ли это, что мне нужно скопировать исходный код этого метода из базового класса - и изменить то, что мне нужно там? Он просто не чувствует правильного кода в одном месте, но я не знаю другого способа расширить метод без изменения кода в базовом классе.
Спасибо за любые предложения.