依赖注入容器:如何处理不依赖于任何东西的对象?

Wim*_*nen 2 c# dependency-injection

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

但是,有时候有些对象不是其他任何东西的依赖,但我们希望它们在对象图中.例如,我可以有一个Notifier带有Bazinga事件的类,这个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!");
    }
}
Run Code Online (Sandbox Code Playgroud)

因为BazingaConsoleLogger不是任何东西的依赖,它不会由依赖注入容器创建.解决这个问题的最佳方法是什么?

Mau*_*fer 5

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

我不认为这就是你的意思,你能否进一步解释你目前如何使用BazingaConsoleLogger?如果你实际上是使用BazingaConsoleLogger,你已经有一个依赖(显性或不)BazingaConsoleLogger.

编辑:松散地连接事件我使用Windsor的事件接线工具.如果您的容器没有类似的东西,那么编码应该不难,这里是一般原则.