在 WPF 应用程序中,我的类层次结构遇到了一些问题。这是您将两个继承树合并在一起的问题之一,如果没有多重继承,您将无法找到任何合乎逻辑的方法来使继承顺利进行。我想知道是否有人对使这种系统正常工作有什么好主意,而不会使其无法遵循或调试。
我是一个低级工程师,所以我的第一个想法总是,“哦!我会用原生 C++ 编写其中的一些类,并在外部引用它们!这样我就可以尽情享受我的老派 OO 乐趣了!” 唉,当您需要从托管控件继承时,这无济于事......
请允许我展示我当前投影的类图的片段:
____________________________________ _____________________________________
| CustomizableObject | | System.Windows.Controls.UserControl |
|____________________________________| |_____________________________________|
| string XAMLHeader() | ▲
| string XAMLFooter() |◄--┐ |
| CustomizableObject LoadObject() | \ |
| <Possible other implementations> | \ |
|____________________________________| \ |
▲ ▲ \ |
| | \ |
| | \ |
_________________ ______________________ \ _____________________
| SpriteAnimation | | SpriteAnimationFrame | └---| CustomizableControl |
|_________________| |______________________| |_____________________|
▲ ▲
| |
| |
________ _____________
| Sprite | | SpriteFrame |
|________| |_____________|
问题很清楚:CustomizableObject 和 CustomizableControl 对象树的分离 --- 以及将 UserControl 插入到一个树中,但不能同时插入两个树。
将 CustomizableObject 的实现移到其派生类中没有实际意义,因为实现不会因类而异。此外,多次实施它会非常令人困惑。所以我真的不想让 CustomizableObject 成为一个接口。接口解决方案对我来说没有任何意义。(说实话,接口对我来说 从来没有真正意义过......)
所以我再说一遍,有人有什么好主意吗?这是一个真正的泡菜。我想了解更多关于使接口与我的对象树一起工作的信息,而不是反对它。我正在使用 WPF 和 C# 制作这个简单的 sprite 引擎作为一个可靠的练习,比什么都重要。这在 C++ 中很容易解决 - 但我需要弄清楚如何在托管环境中解决这些问题,而不是在遇到困难时举起双手回到 Win32。