Сначала я создал базовый класс WinClass и унаследовал от него, как и десятки других классов.
И вот ваша первая проблема.Если WPF научил нас чему-то, то должно быть, что наследование не обязательно является лучшей моделью для проектирования графического интерфейса.
Так есть ли способ сделать это БЕЗ использования виртуального наследования?
Да: WinControl
и WinHandler
не должны быть производными от WinClass
.Вы не сказали, что они делают, поэтому я не могу дать какой-либо конкретный совет о них.Действительно, кажется, что вам нужно отношение «имеет», а не «есть», которое приносит наследование.
Кроме того, нет необходимости использовать жирный шрифт для имен классов.Просто используйте теги кода, которые предоставляет StackOverflow.Также нет необходимости ШОУ жирным шрифтом.