IoC,在构造函数中使用参数混合注入?
问题描述:
我是Inversion of Control(IoC)的新手,所以我想知道处理 这种情况的最佳策略,我希望传递数据结构/参数以及将 对象注入到类中。IoC,在构造函数中使用参数混合注入?
一个简单的例子:
public class EmailSender
{
public EmailSender(string toEmail, string Subject, String body,
ILogger emailLogger)
{.....}
}
什么是这里最好的策略是什么?我想这是不可能直接注入的?
我想我需要把所有的字符串参数作为setter,而 只是在构造函数中有Ilogger
,或者反过来呢?
还是我错了?
P.s.我知道上面的例子很糟糕,并且toEmail
和body
应该在一个单独的方法调用中传递,但它仅仅是一个例子。
答
不,你应该能够在构造函数调用中指定字符串。诚然,我通常期望那些被传入的方法参数更“短暂”的价值观:
public class EmailSender
{
private readonly ILogger emailLogger;
public EmailSender(ILogger emailLogger)
{
this.emailLogger = emailLogger;
}
public void SendEmail(string toEmail, string subject, string body)
{
// ...
}
}
这样相同EmailSender
可以用来发送许多电子邮件 - 在电子邮件本身“流过”的详细信息发件人而不是其中的一部分。
编辑:鉴于编辑的问题,它还不完全清楚什么仍然存在。如果您真的在问如何将字符串指定为构造函数参数,那将取决于您使用的IoC框架。如果你可以指定框架,我们可以给你适当的语法。