繁体   English   中英

如何在Dot Net Core中为第三方静态类使用DI?

[英]How can I use DI for 3'rd party static class in Dot Net Core?

我们公司中的某个人( 很久以前就错误地 )写了这个静态类,由Nuget提供:(我无法编辑)

public static class MailService
 {

    public static void SendEmail(string recipients, string subject, string msg  )
    {
        SendEmail(recipients, subject,  msg);
    }
...
}

我已经知道这很糟糕。 但是,让我们继续。
我想在asp.net核心项目中通过DI使用此类。
问题是我不能使用它(因为static不能被更新):

  services.AddSingleton<MailService>();

在此处输入图片说明

题:

还有没有办法使MailService (或其任何包装器)可注入?

就这么简单:

public interface IMailService {
    void SendEmail(string recipients, string subject, string msg);
}

public class MailServiceWrapper : IMailService {
    public void SendEmail(string recipients, string subject, string msg) {
        MailService.SendEmail(recipients, subject, msg);
    }
}

在启动类中:

services.AddSingleton<IMailService, MailServiceWrapper>();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM