Какие есть хорошие альтернативы множественному наследованию в .NET?
у меня возникла небольшая проблема с моей иерархией классов в приложении WPF. Это'Это одна из тех проблем, когда у вас есть два дерева наследования, и вы можетенайти логичный способ, чтобы ваше наследство работало гладкобез множественное наследование. Я'Мне интересно, есть ли у кого-нибудь блестящие идеи для того, чтобы заставить работать такую систему, не делая невозможным ее отслеживание или отладку.
Я инженер низкого уровня, поэтому моя первая мысль всегда "Ой! Я'Я просто напишу некоторые из этих классов на нативном C ++, и буду ссылаться на них внешне! Тогда я смогу повеселиться на старой школе! " Увы это непомогает, когда вам нужно наследовать от управляемого элемента управления ...
Позвольте мне показать фрагмент моей текущей проектной диаграммы классов:
____________________________________ _____________________________________
| CustomizableObject | | System.Windows.Controls.UserControl |
|____________________________________| |_____________________________________|
| string XAMLHeader() | ▲
| string XAMLFooter() |◄--┐ |
| CustomizableObject LoadObject() | \ |
| | \ |
|____________________________________| \ |
▲ ▲ \ |
| | \ |
| | \ |
_________________ ______________________ \ _____________________
| SpriteAnimation | | SpriteAnimationFrame | └---| CustomizableControl |
|_________________| |______________________| |_____________________|
▲ ▲
| |
| |
________ _____________
| Sprite | | SpriteFrame |
|________| |_____________|
Проблема довольно ясна: разделение деревьев объектов CustomizableObject и CustomizableControl --- и вставка UserControl в одно, но не в оба дерева.
Не имеет практического смысла перемещать реализацию CustomizableObject в его производные классы, так как реализация не 'т варьируется в зависимости от класса. Кроме того, было бы очень сложно реализовать его несколько раз. Так что я действительно нене хочу сделать CustomizableObject интерфейсом. Интерфейсное решение нене имеет никакого смысла для меня. (Интерфейсы имеютникогда действительно, для меня было много смысла, если честно ...)
Так что еще раз говорю, у кого-нибудь есть яркие идеи? Вот этот'настоящий рассол. Я'Я хотел бы узнать больше о том, как заставить интерфейсы работать с моим деревом объектов, а не против него. Я'Я делаю этот простой движок спрайтов, используя WPF и C # как серьезное упражнение, больше всего на свете. Это очень легко решить в C ++, но мне нужно выяснить, как решить эти проблемы в управляемой среде, вместо того, чтобы бросать руки в воздух и бегать обратно к Win32, когда дела идут плохо.