2008-11-17 103 views
3

我是Inversion of Control(IoC)的新手,所以我想知道處理 這種情況的最佳策略,我希望傳遞數據結構/參數以及將 對象注入到類中。IoC,在構造函數中使用參數混合注入?

一個簡單的例子:

public class EmailSender 
{ 

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

什麼是這裏最好的策略是什麼?我想這是不可能直接注入的?

我想我需要把所有的字符串參數作爲setter,而 只是在構造函數中有Ilogger,或者反過來呢?

還是我錯了?

P.s.我知道上面的例子很糟糕,並且toEmailbody應該在一個單獨的方法調用中傳遞,但它僅僅是一個例子。

回答

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框架。如果你可以指定框架,我們可以給你適當的語法。

相關問題