Я прочитал вопросы / ответы , объясняющие, что в нет множественного наследования в C # , что оно нам даже не нужно и что оно вызывает слишком много проблем.
Сейчас я работаю над проектом, в котором я не совсем понимаю, как я могу делать вещи без множественного наследования, без дублирования кода.
Вот ситуация. Существует веб-сайт с домашней страницей и другими страницами, унаследованными от главной страницы (домашняя страница не наследуется от). И на странице, и на главной странице выполняются некоторые действия: настраиваемый вход в систему, статистика, загрузка пользовательских настроек для настройки и т. Д. На данный момент решение является дрянным, поскольку исходный код для этих задач просто копируется дважды .
Класс домашней страницы наследуется от Page
. С другой стороны, главная страница наследуется от Masterpage
. Логично, что было бы здорово наследовать и от общего класса, но это множественное наследование, поэтому это невозможно.
Так что же делать вместо этого?
Я думал о нескольких способах, но не любил их:
Создайте автономный класс, который будет вызываться из класса страницы / мастер-страницы . Например, вместо того, чтобы писать bool isDisplayingTips = this.CurrentUser.IsDisplayingTips
, я бы написал bool isDisplayingTips = this.SharedObjects.CurrentUser.IsDisplayingTips
. Мне это не нравится, так как писать больше.
Создайте "настоящую", пустую, общую мастер-страницу и наследуйте от нее как домашнюю страницу, так и мастер-страницу. Это не только потребует написания большего количества кода для доступа к параметрам мастер-страницы, но и замедлит работу, требуя дополнительной мастер-страницы для каждого запроса.
Есть идеи?