私は Microsoft XNA フレームワークを使用してゲーム プロジェクトに取り組んでいますが、この質問はクラス/システムの分離を伴う一般的なものです。
ここに示すように、クラス(この例に合わせて簡略化)があるとしましょう:
public class GameCell
{
public Color Color { get; set; }
}
C# を使用する複数のプラットフォーム間で、できるだけ多くのコードを再利用したいと考えています。
Color構造体を直接参照する場合の問題は、この型が XNA アセンブリで定義され、コードと XNA の間に強い結合 (または依存関係) が作成されることです。
私が使用する他のフレームワークには、独自のプロパティと API のセットを持つ独自のColorオブジェクトがある場合とない場合があります。
XNAまたは他のフレームワークの実装を自動的に使用するために、同じソースファイルを「認識」させたいと思います。
IoC などの他のタイプのデカップリング メソッドは知っていますが、それは、異なるコンテキストで同じクラスを再利用するのではなく、異なるバージョンのシステム/クラスをプラグインすることを意味します。
これは可能ですか?そのようなシステムをポータブルに保つためにどのように提案しますか?
(ネイティブ C++ 開発で) 使用しているフレームワークが持つクラスをミラーリングする一連のクラスを定義するケースをいくつか見てきました (たとえば、ここで - Color を再度定義します)。これを後で必要に応じて異なるクラスを使用するためにマップします。
もう 1 つのオプションは、#IFDEF を使用して、クラスのヘッダーの using ステートメントをいじることです (XNA から他のプラットフォームに切り替える)。この場合の最良の代替手段は何ですか?