我们公司的某人(很久以前就误认为是 )由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
(或其包装)可注射?
答案 0 :(得分:6)
就这么简单
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);
}
}
在Startup类中:
services.AddSingleton<IMailService, MailServiceWrapper>();
答案 1 :(得分:-1)
您可以使用@stuartd指出的接口实现,但它不一定是包装器。只是实现IMailService的MailService具体类