2008-11-17 65 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框架。如果你可以指定框架,我们可以给你适当的语法。

相关问题