c# – Asp.net MVC样板依赖注入不起作用

c# – Asp.net MVC样板依赖注入不起作用,第1张

概述我正在玩 Asp.Net MVC 6 boilerplate项目.我正在尝试为我的一个服务配置依赖注入.看起来内置的IoC容器忽略了我的绑定. Startup.cs public void ConfigureServices(IServiceCollection services){ /*boilerplate's default bindings*/ services.AddTr 我正在玩 Asp.Net MVC 6 boilerplate项目.我正在尝试为我的一个服务配置依赖注入.看起来内置的IoC容器忽略了我的绑定.

Startup.cs

public voID ConfigureServices(IServiceCollection services){    /*boilerplate's default bindings*/    services.AddTransIEnt<IDummy,Dummy>(p => new Dummy()        {            name = "from injection"        });}

HomeController.cs

public IActionResult Index(IDummy dummy){    var test = dummy.name;    return this.VIEw(HomeControllerAction.Index);}

例外:

ArgumentException: Type
‘Presentation.WebUI.Controllers.IDummy’ does not have a
default constructor

你能告诉我我做错了什么吗?

解决方法 该异常是因为框架无法将 *** 作参数绑定到接口.

当框架默认使用构造函数注入时,您正尝试对Action执行注入.

参考:Dependency Injection and Controllers

Constructor Injection

ASP.NET Core’s built-in support for constructor-based dependency
injection extends to MVC controllers. By simply adding a service type
to your controller as a constructor parameter,ASP.NET Core will
attempt to resolve that type using its built in service container.

public class HomeController : Controller {    IDummy dummy;    public HomeController(IDummy dummy) {        this.dummy = dummy    }    public IActionResult Index(){        var test = dummy.name;        return this.VIEw(HomeControllerAction.Index);    }}

ASP.NET Core MVC controllers should request their dependencIEs
explicitly via their constructors. In some instances,indivIDual
controller actions may require a service,and it may not make sense to
request at the controller level. In this case,you can also choose to
inject a service as a parameter on the action method.

Action Injection with FromServices

Sometimes you don’t need a service for more than one action within
your controller. In this case,it may make sense to inject the service
as a parameter to the action method. This is done by marking the
parameter with the attribute [FromServices] as shown here:

public IActionResult Index([FromServices] IDummy dummy) {    var test = dummy.name;    return this.VIEw(HomeControllerAction.Index);}
总结

以上是内存溢出为你收集整理的c# – Asp.net MVC样板依赖注入不起作用全部内容,希望文章能够帮你解决c# – Asp.net MVC样板依赖注入不起作用所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/langs/1250992.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存