我知道在管理类的正确工作和行为真正需要的依赖项时,应该应用构造函数的注入。
尽管如此,我还是想公开这个例子。让我们假设一个 MailServer 类:
public class MailServer : IMailServer
{
public MailServer(ServerData serverData)
{
_serverData = serverData;
}
public void SendMail(MailData mailData)
{
//Work with mailData instance and send mail
...
smtp.Send(mail);
}
}
ServerData 包含知道如何发送邮件所需的信息,例如:服务器 IP 地址、FROM 源地址、FROM 密码。MailData 包含所需的正文和您要发送邮件的地址。
两者都是必需的依赖项。困扰我并且我不知道如何解决的是 ServerData 在应用程序的不同位置可能不同。如果在发票系统中使用了 IMailServer,则邮件可能应该来自“invoices@domain.com”,但如果它用于其他区域,则应该来自“notifications@domain.com”。
我不知道这是管理这个的正确方法。至于与依赖注入相关的一切,我想知道与暴露的功能相关的良好实践。这段代码几乎总是出现在每个应用程序中,很高兴知道它必须如何完成。
非常感谢!