2013-01-14 53 views
0

我是使用城堡windsor的新手。我已經在我的MVC4應用程序中正確設置和運行了。爲了簡便起見我的解決方案的影響佈局:c#城堡windsor container.Register問題

Entities.dll - ICompanyRepository

DAL.dll - CompanyICompanyRepository

基本上我有一堆的類和接口集像上面這樣,所以如果需要與另一個存儲庫交換DAL,我目前已經使用以下注冊的類和接口與溫莎城堡:

container.Register(Component.For<Entities.ICompanyRepository>().ImplementedBy<DAL.Company>().LifestyleTransient()); 

我的接口和類實現它在不同的項目,因此在我的項目的DLL。我想這樣做,但無法弄清楚是使用像上面一個毯子配置:

container.Register(AllTypes.FromAssemblyNamed("Entities")); 

我已經嘗試了許多不同的組合,但我不能得到它的工作。有任何想法嗎?如果這是更好的選擇,我願意從配置文件加載。

回答

1

我假設你所有的倉庫都實現一個共同的接口,IRepository,如果不是你應該這樣做不只是爲了IoC的目的...

,你可以以登記根據所有組件中使用以下注冊通用接口。 安裝程序應位於入口點項目中,以便能夠看到任何其他項目/ dll。

container.Register(Classes 
.FromAssemblyNamed("DAL")//assembly containing concrete types 
.BasedOn(typeof(IRepository<>)) 
.WithService.DefaultInterfaces()//concrete will be associated(windosr configuration) with closest interface 
.Configure(c => c.YourPolicystrategy()));