当我们使用依赖注入容器时,理想情况下,我们只从其中抽取一个顶级对象(例如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!");
}
}
因为BazingaConsoleLogger
不是任何依赖,它不会被依赖注入容器中创建。解决这个问题的最好方法是什么?
+1“Bazinga!” – 2010-08-26 18:51:37
这是你的实际问题还是只是一个人为的例子? – 2010-08-26 19:34:21
@Mauricio:我的实际问题稍微复杂一些:我有两个预先存在的类,它们彼此不知道,我希望第一个类上的事件触发第二个类上的方法调用。添加导入其他两个实例的第三个类似乎是实现这一目标的自然方式,但第三个类从未由依赖注入容器实例化。 – 2010-08-27 12:52:13