3

我是控制反转(IoC) 的新手,所以我想知道处理我想要传递数据结构/参数以及将对象注入类的情况的最佳策略。

一个简单的例子:

public class EmailSender
{

    public EmailSender(string toEmail, string Subject, String body,
                       ILogger emailLogger)
    {.....}
}

这里最好的策略是什么?估计不能直接注入吧?

我想我需要将所有字符串参数作为设置器而不是Ilogger在构造函数中,或者相反?

还是我错了?

Ps 我知道上面的例子很糟糕,toEmail应该body在一个单独的方法调用中传递,但这只是为了做一个例子。

4

1 回答 1

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 框架。如果您可以指定框架,我们可能会为您提供适当的语法。

于 2008-11-17T06:32:50.933 回答