gpt4 book ai didi

c# - 依赖注入(inject),但不注入(inject) Controller

转载 作者:太空宇宙 更新时间:2023-11-03 23:38:43 24 4
gpt4 key购买 nike

我最近开始尝试使用 DI。我正在使用 Unity Ioc 将业务逻辑层的 EmailService 注入(inject)到表示层中的 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 个参数的构造函数。我知道这意味着什么,但我不确定如何设置它,我已经在网上看到很多关于将依赖项注入(inject) Controller 的例子,但是这个例子呢?有帮助吗?

最佳答案

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

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

重点

container.RegisterType<IEmailService, EmailServiceGmail>();

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

关于c# - 依赖注入(inject),但不注入(inject) Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29854058/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com