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