Я работаю над игровым проектом с использованием платформы Microsoft XNA, хотя этот вопрос является общим, который включает разделение классов / систем.
Допустим, у меня есть класс (упрощенный в соответствии с этим примером) какпоказано здесь:
public class GameCell
{
public Color Color { get; set; }
}
Я хотел бы использовать как можно больше кода между несколькими платформами, использующими C #.
Проблема прямой ссылки на структуру Color заключается в том, что этот тип определен в сборках XNA, создавая сильную связь (или зависимость) между моим кодом и XNA.
Другой каркас, который я буду использовать, может (или не может) иметь свой собственный Объект Color с собственным набором свойств и API.
Мне бы хотелось, чтобы один и тот же исходный файл "знал", чтобы автоматически использовать реализацию XNA или другой инфраструктуры.
Я знаю другие типы методов развязки, такие как IoC, но это означало бы, что я буду подключать разные версии системы / класса, а не использовать один и тот же класс вразличные контексты.
Это вообще возможно сделать?Как бы вы предложили сохранить такую систему переносимой?
Я видел несколько случаев (в разработке на C ++), когда вы определяете набор классов, которые отражают классы, которые использует используемая вами структура (дляпример здесь - снова определите Color), и, таким образом, можно «переназначить» это позже, чтобы использовать другие классы при необходимости.
Другой вариант - возиться с использованием #IFDEF, чтобы поиграть с использованиемоператоры в заголовке класса (переход с XNA на другие платформы).Какова лучшая альтернатива в этом случае?