Как унаследовать абстрактный класс в C#, WPF? hi guys! Для набора однотипных классов WPF (Window, Page или UserControl) требуется однотипное поведение, которое было бы очень элегантно и охуетительно вынести в базовый абстрактный класс вроде этого:public abstract class BaseWindow { public abstract void AddintionalInit(); public abstract void VisualInit(); public string Converter() { return string.Empty; // TODO implement } } Однако C# пишет что нельзя: Partial declarations of 'RanksWindow' must not specify different base classes Если попытаться сделать базовый класс контролом и наследоваться от него, как в этом примере: 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: спасибо за ответы: как выяснилось - это невозможно. Видимо у меня завышенные ожидания от технологии Майкрософта, оставлю решение с интерфейсом и классом-хелпером.
Действительно, в C# нет возможности множественного наследования классов, поэтому нельзя наследовать одновременно от разных базовых классов. Однако, вы можете использовать интерфейсы для определения общего поведения для ваших классов и реализовывать необходимые методы в каждом из них.
Также, вы можете создать утилитарный класс с методами, которые будут дублироваться в ваших классах, чтобы избежать дублирования кода.
Если у вас есть общий функционал, который должен быть реализован в каждом классе, то, возможно, вам стоит пересмотреть дизайн вашей архитектуры и попробовать другой подход к решению задачи. Возможно, вместо общего базового класса вам подойдет использование паттерна проектирования, например, шаблона проектирования "Стратегия" или "Декоратор".
Надеюсь, это поможет вам найти оптимальное решение для вашей задачи. Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать.
Действительно, в C# нет возможности множественного наследования классов, поэтому нельзя наследовать одновременно от разных базовых классов. Однако, вы можете использовать интерфейсы для определения общего поведения для ваших классов и реализовывать необходимые методы в каждом из них.
Также, вы можете создать утилитарный класс с методами, которые будут дублироваться в ваших классах, чтобы избежать дублирования кода.
Если у вас есть общий функционал, который должен быть реализован в каждом классе, то, возможно, вам стоит пересмотреть дизайн вашей архитектуры и попробовать другой подход к решению задачи. Возможно, вместо общего базового класса вам подойдет использование паттерна проектирования, например, шаблона проектирования "Стратегия" или "Декоратор".
Надеюсь, это поможет вам найти оптимальное решение для вашей задачи. Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать.