ASP.NET 4.6如何注入依赖项?

时间:2015-08-13 02:56:47

标签: asp.net asp.net-mvc

我刚刚使用模板使用Visual Studio 2015启动了ASP.NET 4.6(MVC 5.2.3),我看到的一件事是这段代码:

[Authorize]
    public class AccountController : Controller
    {
        private ApplicationSignInManager _signInManager;
        private ApplicationUserManager _userManager;

        public AccountController()
        {
        }

        public AccountController(ApplicationUserManager userManager, ApplicationSignInManager signInManager )
        {
            UserManager = userManager;
            SignInManager = signInManager;
        }
}

正如你可以看到的默认构造函数,我们有第二个构造函数,它注入两个依赖项,我想知道,ASP.NET 4.6如何做到这一点?我没有看到任何IoC容器配置

1 个答案:

答案 0 :(得分:0)

你是对的。 它没有。

默认情况下,该构造函数未被使用。相反,它在访问它们时实例化这些对象。

public ApplicationSignInManager SignInManager
{
    get
    {
        return _signInManager ?? HttpContext.GetOwinContext().Get<ApplicationSignInManager>();
    }
    private set 
    { 
        _signInManager = value; 
    }
}

public ApplicationUserManager UserManager
{
    get
    {
        return _userManager ?? HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>();
    }
    private set
    {
        _userManager = value;
    }
}

在这种情况下,如果对象不存在,则getter正在使用Null coalescing operator ??来创建对象。

如果你愿意,MVC团队已经将那个构造函数放在那里供你使用。