В настоящее время я использую Unity с MOQ для выполнения моего модульного тестирования для WCF. В коде приложения, у меня есть следующие:Microsoft Unity - возможно ли изменить зарегистрированный тип во время выполнения?
private void MyMethod()
{
.....
.....
_proxy = new UnityContainer().LoadConfiguration().Resolve<IMyInterface>();
.....
}
В app.config приложения, я следующее:
<container>
<register type="IMyInterface" mapTo="MyActualObject" />
</container>
В app.config модульного тестирования, я заменить, что с моей издеваться объектная реализация прокси.
<container>
<register type="IMyInterface" mapTo="MyMockObject" />
</container>
Это все работает нормально. Но то, что я хотел бы сделать дальше, это определенные тесты, я хотел бы заменить MyMockObject другой реализацией макетного объекта.
Возможно ли изменение зарегистрированного типа во время выполнения? Я попытался изменить конфигурацию приложения во время выполнения, но не смог обнаружить изменение.
Configuration appConfig = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
var section = (UnityConfigurationSection)appConfig.GetSection("unity");
section.Containers[0].Registrations[0].MapToName = "AnotherMockObject";
appConfig.Save();
Спасибо!
Похоже, модифицируя конфигурационный файл во время выполнения будет работать. Мне просто нужно было обновить раздел, чтобы конфигурация не кэшировалась с помощью ConfigurationManager.RefreshSection («единство»). Но разве это единственный способ добиться того, что мне нужно? –