c# castle Windsor容器.注册的问题
本文关键字:问题 注册 容器 castle Windsor | 更新日期: 2023-09-27 17:52:56
我是第一次使用温莎城堡。我在我的MVC4应用程序中设置了它并正确运行。为简洁起见,我的解决方案的影响布局是:
Entities.dll - ICompanyRepository
DAL.dll - Company
: ICompanyRepository
基本上我有一堆类和接口设置像上面这样,所以我可以切换出DAL如果需要与另一个存储库。我目前已经注册了类和接口与城堡温莎使用以下:
container.Register(Component.For<Entities.ICompanyRepository>().ImplementedBy<DAL.Company>().LifestyleTransient());
我的接口和实现它的类在不同的项目中,因此在我的项目中。我想做但不能弄清楚的是使用一个像上面这样的一揽子配置行:
container.Register(AllTypes.FromAssemblyNamed("Entities"));
我试过很多不同的组合,但我不能让它工作。什么好主意吗?如果这是更好的选择,我愿意从配置文件加载
我假设您所有的存储库都实现了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()));