Я сам из C ++ - фона, где множественное наследование разрешено и широко используется, поэтому я часто сталкиваюсь с теми же проблемами, что и вы.
Первое, что вам нужно сделать, это прочитать о дополнениях - здесь вы заметите, что вы использовали их все время, даже не называя их.
Второй шаг - начать распознавать ваши миксины всякий раз, когда они вам нужны, и вы часто узнаете, что с таким же успехом можете использовать их через композицию.
Третий шаг - реализовать их, используя композицию ... Да, я тоже ненавижу это, но нет никакого способа обойти это, если вы хотите перейти на .NET (или Java или ...):)
То, для чего вы должны использовать наследование, - не для ваших миксинов, а для вещей, которые фактически идентифицируют ваши предметы. Я рекомендую взглянуть на иерархию .NET для некоторых общих элементов управления (текстовое поле и тому подобное), чтобы получить вдохновение.
Удачи