我正在使用Microsoft XNA框架开发一个游戏项目,尽管这个问题是一个涉及类/系统解耦的通用问题。
假设我有一个类(为了适应这个例子而简化)如下所示:
public class GameCell
{
public Color Color { get; set; }
}
我希望在使用多个平台时,能够尽可能地重用大量的代码,这些平台都使用C#。直接引用Color结构的问题是这种类型是在XNA程序集中定义的,这就创建了我的代码与XNA之间的强耦合(或依赖关系)。我将要使用的另一个框架可能(或可能不会)拥有自己的Color对象,具有其自己的属性和API。我希望同一源文件可以自动地“知道”使用XNA或其他框架的实现。我知道还有其他类型的解耦方法,例如IoC,但这意味着我将插入不同版本的系统/类,而不是在不同上下文中重用相同的类。这种做法是否可行?你如何建议保持这样的系统可移植性?我曾经在本机C++开发中看到过一些情况,在这种情况下,你会定义一组类来反映框架正在使用的类(例如这里-重新定义Color),因此可以在需要时“重新映射”以使用不同的类。另一个选项是通过 #IFDEF 来修改类头中的using语句(从XNA切换到其他平台)。在这种情况下,哪种是最好的选择?