棱镜与循环依赖

时间:2011-02-03 14:52:49

标签: wpf prism circular-dependency

我必须使用prism模块,这两个模块都依赖于其他提供的服务。有没有办法以安全的方式呈现相互依赖?我曾考虑将它们组合成一个单独的模块,但它们实际上并没有逻辑组合。

顺便说一句,我知道MEF可以做到这一点;我知道MEF太棒了!我喜欢MEF。我无法切换到该技术,因为它需要在框架和IDE中进行升级,我现在无法负担(时间紧迫)。

如果您遇到与我相同的麻烦,请查看MEF。它对我来说很晚;救你自己!

2 个答案:

答案 0 :(得分:3)

在我看来,逻辑解决方案是将这两个模块之间共享的服务提取到第三个模块中。然后,您的两个当前模块可以安全地依赖于共享模块,您没有循环依赖关系和一个很好的分离项目结构。

任何原因都无法做到这一点?

答案 1 :(得分:0)

我想出了该怎么做。初始化时,演示服务不需要超时服务,所以我在一个惰性属性中解决了它。

    public ITimeout Timeout
    {
        get
        {
            if (_timeout == null)
                _timeout = _serviceLocator.GetInstance<ITimeout>();

            return _timeout;
        }
    }

由于超时服务是在其模块初始化时注册的,因此在需要时可以使用此属性。它不理想,但它的工作原理。这个故事的寓意与MEF一致。

感叹!