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