¿Cuáles son algunas buenas alternativas a la herencia múltiple en .NET?

Me he encontrado con un pequeño problema con mi jerarquía de clases, en una aplicación WPF. Es uno de esos problemas en los que tiene dos árboles de herencia que se fusionan, y no puede encontrar ninguna forma lógica de hacer que su herencia funcione sin problemas.sin Herencia múltiple. Me pregunto si alguien tiene alguna idea brillante para hacer funcionar este tipo de sistema, sin que sea imposible seguirlo o depurarlo.

Soy un ingeniero de bajo nivel, por lo que mi primer pensamiento siempre es: "¡Oh! Solo escribiré algunas de estas clases en C ++ nativo, ¡y las consultaré externamente! ¡Entonces podré divertirme con todos mis OO de la vieja escuela! Por desgracia, esto no ayuda cuando necesitas heredar de los controles administrados ...

Permítame mostrar un fragmento de mi diagrama de clase proyectado actual:

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

El problema es bastante claro: la separación de los árboles de objetos CustomizableObject y CustomizableControl y la inserción de UserControl en uno, pero no en ambos, de los árboles.

No tiene sentido práctico mover la implementación de CustomizableObject a sus clases derivadas, ya que la implementación no varía según la clase. Además, sería realmente confuso tenerlo implementado varias veces. Así que realmente no quiero hacer de CustomizableObject una interfaz. La solución de interfaz no tiene ningún sentido para mí. (Las interfaces tienenNunca Realmente tenía mucho sentido para mí, para ser honesto ...)

Así que repito, ¿alguien tiene alguna idea brillante? Este es un verdadero lío. Me gustaría aprender más sobre cómo hacer que las interfaces funcionen CON mi árbol de objetos, en lugar de hacerlo en contra. Estoy haciendo este simple motor de sprite utilizando WPF y C # como un ejercicio sólido, más que nada. Esto es muy fácil de resolver en C ++, pero necesito descubrir cómo resolver estos problemas en un entorno administrado, en lugar de lanzar mis manos al aire y volver a Win32 cuando sea difícil.

Respuestas a la pregunta(6)

Su respuesta a la pregunta