asp.net – 城堡windsor控制器工厂和存储库无法解决
我目前正在测试Castle Windsor vs. Ninject,我非常喜欢Windsor提供的产品,我只是遇到了存储库注入的问题.
所以,这是设置……我有一个看起来像这样的ControllersInstaller …… public class ControllersInstaller : IWindsorInstaller { public void Install(IWindsorContainer container,IConfigurationStore store) { container.Register(FindControllers().Configure(ConfigureControllers())); } private BasedOnDescriptor FindControllers() { return AllTypes.FromThisAssembly() .BasedOn<IController>() .If(Component.IsInSameNamespaceAs<HomeController>()) .If(t => t.Name.EndsWith("Controller")); } private ConfigureDelegate ConfigureControllers() { return c => c.LifeStyle.Transient; } } 一个看起来像这样的上下文安装程序 public class ContextInstaller : IWindsorInstaller { public void Install(IWindsorContainer container,IConfigurationStore store) { container.Register(AllTypes.FromThisAssembly() .Where(t => t.Name == "MyContext")); } } 还有一个看起来像……的repo安装程序 public class RepoInstaller : IWindsorInstaller { public void Install(IWindsorContainer container,IConfigurationStore store) { container.Register(AllTypes.FromThisAssembly() .Where(type => type.Name.EndsWith("Repo")) .WithService.DefaultInterface() .Configure(c => c.LifeStyle.Singleton)); } } 然后在Global.asax中我通过…注册它们 private static void BootstrapContainer() { var container = new WindsorContainer() // Create a container to hold the dependencies .Install( new ContextInstaller(),new RepoInstaller(),new ControllersInstaller() ); // Scan this assembly for all IWindsorInstaller var controllerFactory = new WindsorControllerFactory(container.Kernel); // Create a new instance ControllerBuilder.Current.SetControllerFactory(controllerFactory); // Use my factory instead of default } 我家的控制器看起来像…… public class HomeController : Controller { IMyRepo _repo; public HomeController(MyRepo repo) { _repo = repo; } 但无论出于什么原因,当我调试我得到的东西时…… 我无法弄清楚为什么!我尝试将我的repo安装程序安装为singleton,我尝试重新排序注册过程,以便repo在控制器之前进行设置. 当我调试并点击Global.asax中的控制器工厂线时,它表示除HomeController之外的所有内容都已正确解析. 思考? 解决方法
如果您注册包含接口的存储库
.WithService.DefaultInterface() 你的依赖必须基于接口(也许是IRepo)而不是具体的. 如果你的依赖是基于具体的,那么删除.WithService.DefaultInterface(),所以依赖将被解析……但这不是最好的方法:因为Repository总是依赖于Interface (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – HTTP POST – 我被卡住了
- asp.net – Static WebMethod中的ResolveUrl
- asp.net – 如何使用Html.ActionLink在标记中添加span标记
- 嵌套字典到嵌套转发器asp.net c#
- asp.net – 经过身份验证的服务不支持跨域javascript回调.
- asp.net-mvc – Basic Umbraco 6.1.1 SurfaceController问题
- 如何将ASP.NET下拉列表DataTextField属性绑定到嵌套属性
- asp.net-mvc – 在Asp.NET MVC中以dd/mm/yyyy格式显示DateT
- asp.net-mvc – 如何在ASP.NET MVC中测试动作过滤器?
- asp.net-core – 在执行DI时指定服务选项的干净方法
- asp.net-mvc – ApplicationDbContext – 它在项
- asp.net-mvc-3 – 如何在asp.net mvc3中添加一组
- 我可以使用ASP.NET成员身份实体框架吗?
- 在ASP.Net中使用参数
- asp.net-mvc – 在asp.NET MVC 3中响应HEAD请求
- ASP.NET会话状态在异常后丢失
- 使用SqlDataSource删除空字典错误 – ASP.net Li
- asp.net-mvc – ModelState.AddModelError编码HT
- asp.net – 考虑Scalablity和友好URL的GUID替代方
- asp.net-mvc – 为什么我在MVC3控制器中的模型中