2012-03-21 25 views
0

它可能在Moq框架中嗎?從依賴注入的容器獲取對象?

我正確地配置容器並使用它,但是可以獲得注入類型的具體實例嗎?例如,向我的服務注入一個存儲庫,我想獲取服務中使用的存儲庫實例,這有可能嗎?

_container.Configure(c => 
{ 
c.For<IUserApplicationService>().Use<UserApplicationService>(); 
c.For<IRepository<LegalEntity>>().Use<LegalEntityRepository>(); 
c.For<IRepository<User>>().Use<UserRepository>(); 
c.For<ILocalMembershipService>().Use<AspMembershipServiceAdapter>(); 
c.For<IEmailService>().Use(emailStub); 
}); 

現在我這樣做的,我使用單單一對象IEmailService依賴

和我想要的是讓創建的動態對象。它可能不可能

+3

請問您可以添加如何注入等代碼片段?有助於。 – 2012-03-21 17:07:57

+0

你是說你用Moq來實現一個接口,用這個配置一個DI容器,並且解決了一個依賴於DI容器的模擬接口的另一種類型的實例?如果是這種情況,那麼實際上就沒有具體的類型 - 它是一種即時生成的Moq類型。 – TrueWill 2012-03-21 17:10:55

回答

0

所以你想從你的注入接口訪問你的基類型?你總是可以投,但這會違反DI原則。

+0

如何向DI原理鑄造基礎類型?它只是使用LSP。 – 2012-03-21 18:24:14

+0

因爲你不應該知道基類甚至存在。 – Mathieu 2012-03-21 18:31:56

0

鑑於您的容器支持工廠,如何在創建IEmailService模擬的容器中爲IEmailService設置工廠,將其存儲在您的測試可訪問的位置並返回模擬。