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 に答える