代码之家  ›  专栏  ›  技术社区  ›  TanvirArjel

在ASP.NET MVC 5启动类中注入依赖项

  •  1
  • TanvirArjel  · 技术社区  · 7 年前

    我正在控制器中注入依赖项,如下所示:

    private IEmailSender _emailSender;
    
    public HomeController(IEmailSender emailSender)
    {
         _emailSender = emailSender;
    }
    

    Ninject 具体如下:

    private static void RegisterServices(IKernel kernel)
    {
        kernel.Bind(typeof(IEmailSender)).To(typeof(EmailSender));   
    }
    

    到目前为止一切正常。但我需要用这个 IEmailSender 服务于 Startup 班级。

    到目前为止,我尝试的是:

    public partial class Startup
    {
        private IEmailSender _emailSender;
    
        public Startup(IEmailSender emailSender)
        {
            _emailSender = emailSender;
        }
    
        public void Configuration(IAppBuilder app)
        {
            ConfigureAuth(app);
    
           _emailSender.SendEmail();
        }
    }
    

    但这不起作用,因为应用程序无法启动,因为 启动

    电子邮件发件人 在创业课上?

    2 回复  |  直到 7 年前
        1
  •  4
  •   user3559349 user3559349    7 年前

    Ninject将自己指定为当前 DependencyResolver 实例,以便可以使用 .GetService() 方法注入具体实例

    public partial class Startup
    {
        private IEmailSender _emailSender;
        public Startup()
        {
            _emailSender = DependencyResolver.Current.GetService<IEmailSender>();
        }
        public void Configuration(IAppBuilder app)
        {
            ConfigureAuth(app);
           _emailSender.SendEmail();
        }
    }
    
        2
  •  0
  •   YogeshI    7 年前

    您可以在中创建内核 Program.cs 主要功能。所以所有的对象和服务都是在 Startup.cs 被称为。这种方式 尼杰特 将能够解决 IEmailSender 在创业课上。