I am injecting dependencies in my controller as follows:
private IEmailSender _emailSender;
public HomeController(IEmailSender emailSender)
{
_emailSender = emailSender;
}
Then resolving the dependencies using Ninject
as follows:
private static void RegisterServices(IKernel kernel)
{
kernel.Bind(typeof(IEmailSender)).To(typeof(EmailSender));
}
So far everything is working fine. But I need to use this IEmailSender
service in Startup
class.
What I have tried so far is:
public partial class Startup
{
private IEmailSender _emailSender;
public Startup(IEmailSender emailSender)
{
_emailSender = emailSender;
}
public void Configuration(IAppBuilder app)
{
ConfigureAuth(app);
_emailSender.SendEmail();
}
}
But this does not work as application does not start because Startup
class does not have parameter less constructor.
Any idea how I can use IEmailSender
in Startup class?
Ninject assigns itself as the current DependencyResolver
instance, so you can use its .GetService()
method to inject the concrete instance
public partial class Startup
{
private IEmailSender _emailSender;
public Startup()
{
_emailSender = DependencyResolver.Current.GetService<IEmailSender>();
}
public void Configuration(IAppBuilder app)
{
ConfigureAuth(app);
_emailSender.SendEmail();
}
}