我目前使用Unity和最小起訂量來做我的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(「unity」)不會緩存配置。但是這是實現我所需要的唯一途徑嗎? – 2012-04-26 04:46:40