gpt4 book ai didi

c# - 依赖注入(inject)容器 : how to handle objects that aren't a dependency of anything?

转载 作者:行者123 更新时间:2023-11-30 19:49:42 25 4
gpt4 key购买 nike

当我们使用依赖注入(inject)容器时,理想情况下我们只从中拉取一个顶级对象(例如 Program 的实例)并让应用程序的其余部分由容器自动组合.

然而,有时有些对象不依赖于任何其他对象,但我们希望将它们包含在对象图中。例如,我可以有一个带有 Bazinga 事件的 Notifier 类,而这个 BazingaConsoleLogger 类:

public class BazingaConsoleLogger
{
private readonly Notifier notifier;

public BazingaConsoleLogger(Notifier notifier)
{
this.notifier = notifier;
this.notifier.Bazinga += HandleBazinga;
}

private void HandleBazinga(object sender, EventArgs args)
{
Console.WriteLine("Bazinga!");
}
}

因为BazingaConsoleLogger不是任何东西的依赖,它不会被依赖注入(inject)容器创建。解决此问题的最佳方法是什么?

最佳答案

如果 BazingaConsoleLogger 是一个服务而不是任何东西的依赖项,那么它不会在您的程序中的任何地方使用,因此可以删除该类。更少的代码! :-)

我不认为那是你真正的意思,所以你能进一步解释一下你目前是如何使用 BazingaConsoleLogger 的吗?如果您实际上正在使用 BazingaConsoleLogger,那么您已经具有对 BazingaConsoleLogger 的依赖性(无论是否明确)。

编辑:我使用 Windsor's Event Wiring facility 松散地连接事件.如果您的容器没有类似的东西,那么编写代码应该不难,here are the general principles .

关于c# - 依赖注入(inject)容器 : how to handle objects that aren't a dependency of anything?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3577733/

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