【问题标题】:Constructor Dependency injection in asp.net core 2 [duplicate]asp.net core 2中的构造函数依赖注入[重复]
【发布时间】:2017-11-30 09:21:13
【问题描述】:

我已经阅读了这个官方文档:https://docs.microsoft.com/en-us/aspnet/core/fundamentals/dependency-injection.

在构造函数注入中有一些我不明白的地方:

让我们看看我的代码,它运行良好:

public class HomeController : Controller
{
    private readonly UserManager<Utilisateurs> _userManager;
    private readonly SignInManager<Utilisateurs> _signInManager;
    private readonly RoleManager<IdentityRole> _roleManager;

    public HomeController(
        SignInManager<Utilisateurs> signInManager,
        UserManager<Utilisateurs> userManager,
        RoleManager<IdentityRole> roleManager)
    {
        _userManager = userManager;
        _signInManager = signInManager;
        _roleManager = roleManager;
    }

如果更改构造函数参数顺序或者我删除一些这样的参数,它也可以正常工作:

public class HomeController : Controller
{
    private readonly UserManager<Utilisateurs> _userManager;
    private readonly SignInManager<Utilisateurs> _signInManager;

    public HomeController(
        UserManager<Utilisateurs> userManager
        SignInManager<Utilisateurs> signInManager,
        )
    {
        _userManager = userManager;
        _signInManager = signInManager;
    }

我已经理解了 DI 的概念。我不明白的是,在 C# 中如何在构造函数参数中有一些动态的东西? 是否有一套各种重载构造函数?

谢谢

【问题讨论】:

  • 您需要澄清您的问题。 have something dynamic in constructor parameters 是什么意思?你指的是dynamic这个关键词吗?
  • 可能有助于了解一个非常简单的hand-rolled DI 实现实际上做了什么——不需要特别聪明。显然,成熟的 DI 框架更加进化,但在其核心,它们只是在做同样的事情。

标签: c# dependency-injection asp.net-core-2.0


【解决方案1】:

在 C# 中如何在构造函数参数中添加一些动态的东西?是否有一套各种重载构造函数?

不要像那样使用“动态”,它是那句话中的流行词。在编程中,一切都是动态的。

如果你的意思是问一个 DI 框架如何将注册的服务与构造函数参数匹配,那么是的,有一组构造函数重载。

DI 框架通过反射找到这些,请参阅MSDN: Type.GetConstructors()。然后对于每个构造函数,每个构造函数的框架obtains the parameters 将它们与注册的服务匹配并调用其中一个构造函数。

【讨论】:

    猜你喜欢
    • 2016-01-01
    • 1970-01-01
    • 2021-05-13
    • 1970-01-01
    • 2011-02-02
    • 2018-06-17
    • 1970-01-01
    • 2019-11-11
    相关资源
    最近更新 更多