Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 棱镜与圆相关_Wpf_Prism_Circular Dependency - Fatal编程技术网

Wpf 棱镜与圆相关

Wpf 棱镜与圆相关,wpf,prism,circular-dependency,Wpf,Prism,Circular Dependency,我必须对依赖于其他服务的模块进行分析。有没有一种安全的方式来表达相互依存?我曾考虑过将它们组合成一个模块,但它们在逻辑上并没有结合 顺便说一句,我知道MEF可以做到这一点;我知道MEF很棒!我爱我。我不能切换到这种技术,因为它需要在框架和IDE中进行升级,我现在负担不起(时间方面) 如果你和我有同样的问题,去看看吧。对我来说太晚了;自救 在我看来,合乎逻辑的解决方案是将这两个模块之间共享的服务提取到第三个模块中。然后,您当前的两个模块都可以安全地依赖于共享模块,您没有循环依赖关系,并且项目结构分

我必须对依赖于其他服务的模块进行分析。有没有一种安全的方式来表达相互依存?我曾考虑过将它们组合成一个模块,但它们在逻辑上并没有结合

顺便说一句,我知道MEF可以做到这一点;我知道MEF很棒!我爱我。我不能切换到这种技术,因为它需要在框架和IDE中进行升级,我现在负担不起(时间方面)


如果你和我有同样的问题,去看看吧。对我来说太晚了;自救

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


有什么原因不能这样做吗?

我知道该怎么办了。初始化时表示服务不需要超时服务,所以我在一个lazy属性中解决了它

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

            return _timeout;
        }
    }
public ITimeout超时
{
得到
{
如果(_timeout==null)
_超时=_serviceLocator.GetInstance();
返回超时;
}
}
由于超时服务是在其模块初始化时注册的,因此此属性在需要时可用。这并不理想,但确实有效。这个故事的寓意是不言而喻的


从逻辑上讲,这些都是非常原子化的模块。也就是说,它们各自提供单一服务。我很擅长分解,也许太好了,也许我应该把它们结合起来,但这在逻辑上很难看。但我认为这是可行的。一个是超时服务,在一定的空闲时间后启动kiosk应用程序,另一个是视图切换/导航服务。似乎如果这些模块相互依赖,它们在逻辑上应该是同一个模块。@Anderson,模块分解并不总是按照依赖关系进行最佳划分。有时有必要在两个单独的实体之间建立一对一的关系。它们不是相互依赖的,因为它们都依赖于对方而不是对方本身提供的服务。与他们结婚将是一种方便实用的行为,而不是合乎逻辑的行为。在时间限制要求我务实之前,我是一个理想主义者。谢天谢地,我有一点回旋余地,同时也有一个解决方案。我没有遇到过两个模块相互依赖而不能更恰当地分解的情况(要么将有问题的服务放在另一个模块中,要么确定它们是外壳中的基本核心功能)。“你的情况如何?”安德森,可能是后者。