asp.net-mvc – 在ASP.NET MVC 3应用程序中引用类库中的Ninject
我有一个ASP.NET MVC 3应用程序,它使用Ninject.MVC3扩展来在我的MVC应用程序中设置DI.也就是说,App_Start文件夹中有NinjectMVC3.cs文件,其中定义了我的绑定.这适用于我的应用程序控制器中的DI.
除了ASP.NET MVC Web应用程序之外,我的解决方案还包含一个类库项目,我们称之为MyProject.Core,它具有我的域模型,服务等.在那里,我有一个名为UserServices的类,它使用名为EmailServices的服务,如下所示: public class UserServices : IUserServices { private readonly IEmailServices _emailServices = new EmailServices(); public void CreateUser(...) { // Create user... _emailServices.SendWelcomeEmail(newUser); } } 如您所见,UserServices类对EmailServices具有硬编码依赖性,但我希望将其配置为使用DI.也就是说,在我的ASP.NET MVC应用程序(或单元测试项目或任何地方),我希望能够说,“绑定IEmailServices以使用TestEmailServices”并让UserServices类使用TestEmailServices而不是EmailServices. 我该怎么做呢?我希望能够做到这样的事情: public class UserServices : IUserServices { private readonly IEmailServices _emailServices = kernel.Get<EmailServices>(); ... } 但在这种情况下,我不确定内核将来自哪里.我在问什么是有道理的,还是我在这里咆哮错了? 谢谢 解决方法
您应该能够使用构造函数注入执行此操作,如下所示:
private readonly IEmailServices _emailServices; public UserServices(IEmailServices emailServices) { _emailServices = emailServices; } Ninject自定义控制器工厂应自动处理对控制器的服务注入,它将使用配置的IoC容器在创建控制器时解析IUserServices对象,然后容器将给出一个IEmailServices对象: public class MyController : Controller { private readonly IUserServices _userServices; public MyController(IUserServices userServices) { _userServices = userServices; } } 在进行单元测试时,您可以手动将虚假或模拟电子邮件服务注入用户服务. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc-3 – 使用ASP.net MVC 3.0进行RDLC报告
- asp.net – 如何使用HtmlEncode与TemplateFields,数据绑定和
- asp.net – 如何从ASP Web服务的JSON响应中删除d:和__type
- asp.net-mvc-4 – MVC 4中的ClientValidationEnabled和Unob
- 为什么我的ASP.Net站点在IIS7下运行需要很长时间才能在一段
- asp.net-core – 使用IdentityServer4生成访问令牌,无需密码
- asp.net-mvc-4 – 使用信号器一对一,包括离线模式
- 将ASP.NET验证与JQuery相结合的优雅方式
- asp.net-mvc-5 – WebJob和SignalR Hub之间的通信
- asp.net – 如何调用一个特定的UpdatePanel加载后的客户端J
- asp.net-mvc – 未找到与请求URI匹配的HTTP资源
- 如何在ASP.NET应用程序中使用jQuery捕获提交事件
- asp.net-mvc – 澄清在ASP.NET MVC中使用ELAMH
- 如何设置起始页面在webconfig文件在asp.net c#
- asp.net-mvc – 如果在Razor MVC 3中浏览器未继承
- asp.net-mvc – 使用cookie在ASP MVC中存储会话
- asp.net-4.0 – Asp.net 4.0:如何在自定义错误页
- asp.net-web-api2 – Swagger中的数据注释
- asp.net-mvc – ActionExecutingContext – Acti
- asp.net-mvc-4 – 未找到入口点异常