Как унаследовать абстрактный класс в C#, WPF? hi guys
Для набора однотипных классов WPF (Window, Page или UserControl) требуется однотипное поведение, которое было бы очень элегантно и охуетительно вынести в базовый абстрактный класс вроде этого:public abstract class BaseWindo

public abstract void AddintionalInit()
public abstract void VisualInit()
public string Converter(

return string.Empty; // TODO implemen


Однако C# пишет что нельзя: Partial declarations of 'RanksWindow' must not specify different base classe
Если попытаться сделать базовый класс контролом и наследоваться от него, как в этом примере: geekswithblogs.net/lbugnion/archive/2007/03/02/107747.aspx , пишет в xaml-разметке, что cannot be the root of a XAML file because it was defined using XAML В комментариях там же пишут, что способ работал в VS2005 SP1 + WPF, но перестал работать в VS2008 и всех последующих
И как можно решить мою проблему? Временное решение, которое придумал: интерфейс для всей группы контролов и утилитарный класс, методы которого дергаются в каждом из контролов. Но это ж через жопу решение, помогите!UPD: спасибо за ответы: как выяснилось - это невозможно. Видимо у меня завышенные ожидания от технологии Майкрософта, оставлю решение с интерфейсом и классом-хелпером.

21 Авг 2019 в 07:00
227 +1
0
Ответы
1

Действительно, в C# нет возможности множественного наследования классов, поэтому нельзя наследовать одновременно от разных базовых классов. Однако, вы можете использовать интерфейсы для определения общего поведения для ваших классов и реализовывать необходимые методы в каждом из них.

Также, вы можете создать утилитарный класс с методами, которые будут дублироваться в ваших классах, чтобы избежать дублирования кода.

Если у вас есть общий функционал, который должен быть реализован в каждом классе, то, возможно, вам стоит пересмотреть дизайн вашей архитектуры и попробовать другой подход к решению задачи. Возможно, вместо общего базового класса вам подойдет использование паттерна проектирования, например, шаблона проектирования "Стратегия" или "Декоратор".

Надеюсь, это поможет вам найти оптимальное решение для вашей задачи. Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать.

20 Апр в 13:10
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 90 663 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир