gpt4 book ai didi

inversion-of-control - IoC,在构造函数中混合注入(inject)和参数?

转载 作者:行者123 更新时间:2023-12-04 08:22:59 25 4
gpt4 key购买 nike

我是 Inversion of Control 的新手(IoC),所以我想知道处理的最佳策略我想传递数据结构/参数以及注入(inject)的情况对象到类中。

一个简单的例子:

public class EmailSender
{

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

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

我想我需要将所有字符串参数改为 setter ,并且只在构造函数中使用 Ilogger,还是反过来?

还是我错了?

附言我知道上面的示例很糟糕,toEmailbody 应该在单独的方法调用中传递,但这只是为了举例。

最佳答案

不,您应该能够在构造函数调用中指定字符串。不可否认,我通常希望那些是作为方法参数传入的更“ transient ”的值:

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

关于inversion-of-control - IoC,在构造函数中混合注入(inject)和参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/295005/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com