1
我知道在这里讨论了依赖注入与棱镜/统一关系的循环依赖问题。C#在Ctor中的循环依赖关系Cors注入
但我仍然不明白。假设以下类:
class Feeder : IFeeder {
IManager _MM,
Feeder(IManager MM)
{
this._MM = MM;
}
public void Start()
{
...
}
public void Stop()
{
...
}
private Propagate()
{
_MM.ConsumeFeed()
}
};
class FeedManager : IManager
{
IFeeder _Feeder;
FeedManager(IFeeder Feeder)
{
this._Feeder = Feeder;
}
public ConsumeFeed()
{
...
}
private Shutdown()
{
_Feeder.Stop();
}
private StartUp()
{
_Feeder.Start();
}
};
这显然是一个圆形的dependcy,因为馈线取决于FeedManager和副verca。我没有看到明确的方法来解决这个问题,因为它似乎是一个非常自然的设计。
当你按照这link有一个提示来提取一些方法,但我仍然没有看到我如何去耦这些对象。 我读了关于依赖倒置,观察者模式,共享对象,事件等内容。 对我来说,这似乎都是为了达到两个对象之间的简单实用而矫枉过正。
解决此问题的唯一方法是使用应用程序或共享对象中的一百万个事件吗? 感谢您的帮助,Juergen
是的,它的设计问题。事情是,这个统一使用Ctor注射剂和它的易用性来通过推进注射(延迟实例化机制)来克服这一点。所以一般来说,要避免这是使用事件。但正如我所说,我想避免在应用程序中有一百万个事件。 – Juergen
为什么你想避免事件?从我的观点来看,没有理由避免发生事件。 – PVitt
假设FeedManager也引发了Feeder应该消耗的事件。然后再次有循环依赖。在这种情况下,eventaggregator会成为解决方案吗? – Juergen