Quais são algumas boas alternativas para herança múltipla no .NET?

Eu tive um problema com a minha hierarquia de classes, em um aplicativo WPF. É um desses problemas em que você tem duas árvores de herança se unindo e não é possível encontrar nenhuma maneira lógica de fazer sua herança funcionar sem problemassem herança múltipla. Eu estou querendo saber se alguém tem alguma idéia brilhante para obter este tipo de sistema funcionando, sem tornar impossível seguir ou depurar.

Eu sou um engenheiro de baixo nível, então meu primeiro pensamento é sempre: "Oh! Vou apenas escrever algumas dessas classes em C ++ nativo, e referenciá-las externamente! Então eu posso ter toda a minha diversão OO old-school!" Infelizmente, isso não ajuda quando você precisa herdar de controles gerenciados ...

Permita-me mostrar um trecho do meu diagrama atual de classes projetadas:

 ____________________________________      _____________________________________
| CustomizableObject                 |    | System.Windows.Controls.UserControl |
|____________________________________|    |_____________________________________|
|   string XAMLHeader()              |                        ▲
|   string XAMLFooter()              |◄--┐                    |
|   CustomizableObject LoadObject()  |   \                    |
|   <Possible other implementations> |    \                   |
|____________________________________|     \                  |
         ▲                      ▲           \                 |
         |                      |            \                |
         |                      |             \               |
 _________________    ______________________   \    _____________________
| SpriteAnimation |  | SpriteAnimationFrame |  └---| CustomizableControl |
|_________________|  |______________________|      |_____________________|
                                                      ▲             ▲
                                                      |             |
                                                      |             |
                                                  ________    _____________
                                                 | Sprite |  | SpriteFrame |
                                                 |________|  |_____________|

O problema é bastante claro: a separação das árvores de objetos CustomizableObject e CustomizableControl - e a inserção de UserControl em uma, mas não em ambas, das árvores.

Não faz sentido prático mover a implementação de CustomizableObject para suas classes derivadas, uma vez que a implementação não varia por classe. Além disso, seria muito confuso implementá-lo várias vezes. Então eu realmente não quero fazer CustomizableObject uma interface. A solução de interface não faz nenhum sentido para mim. (InterfacesNunca realmente fez muito sentido para mim, para ser honesto ...)

Então eu digo novamente, alguém tem alguma idéia brilhante? Este é um verdadeiro picles. Eu gostaria de aprender mais sobre como fazer interfaces trabalharem com minha árvore de objetos, ao invés de contra ela. Eu estou fazendo este mecanismo de sprite simples usando WPF e C # como um exercício sólido, mais do que qualquer coisa. Isso é tão fácil de resolver em C ++ - mas eu preciso descobrir como resolver esses problemas em um ambiente gerenciado, em vez de jogar minhas mãos no ar e voltar para o Win32 sempre que as coisas ficam difíceis.

questionAnswers(6)

yourAnswerToTheQuestion