Изменение конфигурации структуры карты в зависимости от настроек в app.config - PullRequest
2 голосов
/ 26 апреля 2010

Я использую структуру карты в моем проекте. Чтобы внедрить различные реализации репозитория, я хочу, чтобы в app.config был переключатель, который изменяет всю реальную реализацию репозитория на фиктивные репозитории.

Допустим, у IRepository есть две реализации: RealRepository и MockRepository

ForRequestedType () .TheDefaultIsConcreteType ();

Я хочу, чтобы в app.config / web.config был указан переключатель (Mock = 1), который изменяет реализацию всех реальных репозиториев на

ForRequestedType () .TheDefaultIsConcreteType ();

Я не хочу писать полное определение плагина в app.config, просто хочу один переключатель, как мне это реализовать?

1 Ответ

2 голосов
/ 26 апреля 2010

Хотя это может выглядеть странно, помните, что ваш регистрационный код StructureMap по-прежнему просто C #, и вы обладаете всеми возможностями языка, доступного вам. Это означает, что вы можете использовать выражение «если», когда это необходимо. Поскольку ваше условие основано на app.config, вам не нужно учитывать изменение значения во время выполнения - вы можете безопасно использовать это значение во время запуска конфигурации.

if (appConfigIndicatesMockMode()){
  ForRequestedType<IRepository>().TheDefaultIsConcreteType<MockRepository>()
} else {
  ForRequestedType<IRepository>().TheDefaultIsConcreteType<RealRepository>()
}

, где appConfigIndicatesMockMode() - это метод, который читает ваш параметр app.config обычным способом и возвращает true или false.

...