依赖注入,但不注入控制器

Dependency injection, but not into a controller

我最近开始尝试 DI。我正在使用 Unity Ioc 将业务逻辑层的 EmailService 注入到表示层中的 EmailServiceWrapper 中,然后实例化,我的代码如下:

public class EmailServiceWrapper : IIdentityMessageService
{
    private readonly IEmailService _emailService;
    public EmailServiceWrapper(IEmailService emailService)
    {
        this._emailService = emailService;
    }
    public async Task SendAsync(IdentityMessage message)
    {
        await _emailService.configSendGridasync(message.Body, message.Subject, new MailAddress(message.Destination));
    }
} 

我这样注册映射:

    public static void RegisterTypes(IUnityContainer container)
    {
        container.RegisterType<IEmailService, EmailServiceGmail>();
    }

最后,在我的 ApplicationUserManager.cs 中,我尝试执行以下操作:

    appUserManager.EmailService = new EmailServiceWrapper(); //Dependency injection?

我收到一个错误:"EmailServiceWrapper" 没有接受 0 个参数的构造函数。 我知道这意味着什么,但我不确定如何设置这个,我在网上看到很多关于将依赖项注入控制器的例子,但是这个例子呢?有帮助吗?

Unity 的目标是您不需要自己显式构造对象,而是需要所有内部构造函数;相反,你让容器为你做:

appUserManager.EmailService = container.Resolve<EmailServiceWrapper>();

的要点
container.RegisterType<IEmailService, EmailServiceGmail>();

是为容器提供新的任何需要 IEmailService 的对象所需的信息。