我是Inversion of Control(IoC)的新手,所以我想知道要处理的最佳策略 我希望传递数据结构/参数以及注入的情况 对象变成了一个类。
一个简单的例子:
public class EmailSender
{
public EmailSender(string toEmail, string Subject, String body,
ILogger emailLogger)
{.....}
}
这里最好的策略是什么?我想直接注射是不可能的?
我想我需要将所有字符串参数作为setter来代替
只是在构造函数中有Ilogger
,或者反过来?
或者我错了?
P.S。我知道上面的示例很糟糕,toEmail
和body
应该在一个单独的方法调用中传递,但它只是为了做一个例子。
答案 0 :(得分:3)
不,您应该能够在构造函数调用中指定字符串。不可否认,我通常希望那些作为方法参数传递的更“瞬态”值:
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框架。如果您可以指定框架,我们可能会为您提供适当的语法。