WPFアプリケーションでクラス階層に問題が発生しました。これは、2つの継承ツリーが合併している問題の1つで、継承を持たない継承をスムーズに行うための論理的な方法を見つけることはできません。この種のシステムをうまく動作させるための賢明なアイデアがあれば、それに従うことも、デバッグすることも不可能ではありません。.NETでの複数継承の良い選択肢は何ですか?
私は低レベルのエンジニアなので、最初の考えは常に「ああ、私はネイティブC++でこれらのクラスのいくつかを書いて、それらを外部から参照します! OOの楽しみ!
____________________________________ _____________________________________
| CustomizableObject | | System.Windows.Controls.UserControl |
|____________________________________| |_____________________________________|
| string XAMLHeader() | ▲
| string XAMLFooter() |◄--┐ |
| CustomizableObject LoadObject() | \ |
| <Possible other implementations> | \ |
|____________________________________| \ |
▲ ▲ \ |
| | \ |
| | \ |
_________________ ______________________ \ _____________________
| SpriteAnimation | | SpriteAnimationFrame | └---| CustomizableControl |
|_________________| |______________________| |_____________________|
▲ ▲
| |
| |
________ _____________
| Sprite | | SpriteFrame |
|________| |_____________|
問題はかなり明確である:分離あなたがマネージコントロールを継承する必要がある場合残念ながら、これは
は私が私の現在の投影クラス図のスニペットを表示することを許可する...助けにはなりませんCustomizableObjectとCustomizableControlオブジェクトツリーの両方に、UserControlをツリーの1つに挿入し、両方には挿入しません。
CustomizableObjectの実装を派生クラスに移行するのは現実的ではありません。実装はクラスによって異なるためです。さらに、複数回実装するのは本当に紛らわしいでしょう。だから私は本当にCustomizableObjectをインターフェイスにしたくありません。インターフェイスの解決策は私には分かりません。 (インターフェイスはを持っていません。は正直言って私にとって本当に意味がありました...)
私はもう一度言っています。これは本当のピクルスです。私は、インターフェイスを自分のオブジェクトツリーで動作させる方法についてもっと知りたいと思っています。私は、この単純なスプライトエンジンをWPFとC#を使って、何よりも強固な運動として作っています。これはC++で非常に簡単に解決できますが、管理対象環境でこれらの問題を解決する方法を理解する必要があります。
+1これらすべてを描画するために: – Kamarey
母、私の芸術作品が高く評価されてうれしいです。 – Giffyguy
この質問はよくstackoverflows Q&A形式に収まりません。 「良い選択肢は何か」は、すでに正解が1つしかないことを前提としています。そこにはさまざまな方法や意見があります。 –