Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.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
Dependencies IOC/DI如何影响依赖项维护?_Dependencies_Inversion Of Control_Dependency Management - Fatal编程技术网

Dependencies IOC/DI如何影响依赖项维护?

Dependencies IOC/DI如何影响依赖项维护?,dependencies,inversion-of-control,dependency-management,Dependencies,Inversion Of Control,Dependency Management,我试图理解一个大量使用StructureMap(一个IOC/DI容器框架)的大型项目。所有共享组件的接口都包含在单个项目中,该项目由所有其他项目引用 尝试构建依赖层次结构时,我发现很难检测哪个项目依赖于其他项目,因为没有直接的项目引用,只有对接口项目的单个引用 如何仍然构建层次结构树?相反,是将所有接口集中在一个超级项目良好实践中,还是应该是“正常的”,即每个项目都包含自己的公共接口(以及实现它的预定义具体类)。这也允许通过简单地遵循引用项目来轻松构建层次结构。这可能有点主观,但我反对将接口打包

我试图理解一个大量使用StructureMap(一个IOC/DI容器框架)的大型项目。所有共享组件的接口都包含在单个项目中,该项目由所有其他项目引用

尝试构建依赖层次结构时,我发现很难检测哪个项目依赖于其他项目,因为没有直接的项目引用,只有对接口项目的单个引用


如何仍然构建层次结构树?相反,是将所有接口集中在一个超级项目良好实践中,还是应该是“正常的”,即每个项目都包含自己的公共接口(以及实现它的预定义具体类)。这也允许通过简单地遵循引用项目来轻松构建层次结构。

这可能有点主观,但我反对将接口打包到一个单独的项目中,该项目包含彼此不自然相关的接口。如果应用程序的不同部分有单独的项目,那么这些项目的接口也应该是单独的。虽然有时可能有理由将接口与实现放在一个单独的项目中,但正如您所描述的,将多个实现项目中的接口组合到一个巨大的接口项目中并不是一个很好的理由


如果您遇到这种情况,并且想要显示实际的运行时依赖关系,那么您可能需要检查配置,这可能需要使用注册表DSL,或者可能需要解析XML配置。

这可能有点主观,但我反对将接口打包到一个单独的项目中,该项目包含相互之间没有自然关联的接口。如果应用程序的不同部分有单独的项目,那么这些项目的接口也应该是单独的。虽然有时可能有理由将接口与实现放在一个单独的项目中,但正如您所描述的,将多个实现项目中的接口组合到一个巨大的接口项目中并不是一个很好的理由


如果您遇到这种情况,并且想要显示实际的运行时依赖关系,则可能需要检查配置,这可能需要使用注册表DSL,也可能需要解析XML配置。

我完全同意接口分离。我想知道是否有一个特定的、与IOC容器相关的原因不按照您描述的“正常”方式进行操作,但似乎没有。关于依赖关系,如果我没有弄错的话,注册表DSL只说明容器中组件之间的依赖关系,而不是更高级别的项目,因此这是一个非常不完整的画面。我假设我在那里运气不好,必须手动解决这个问题?你是对的,你可能需要将从注册表或xml中获得的任何信息添加到项目中的位置信息中,并且必须手动解决这些连接,除非IDE对此有帮助。很可能是一团糟!我完全同意界面分离。我想知道是否有一个特定的、与IOC容器相关的原因不按照您描述的“正常”方式进行操作,但似乎没有。关于依赖关系,如果我没有弄错的话,注册表DSL只说明容器中组件之间的依赖关系,而不是更高级别的项目,因此这是一个非常不完整的画面。我假设我在那里运气不好,必须手动解决这个问题?你是对的,你可能需要将从注册表或xml中获得的任何信息添加到项目中的位置信息中,并且必须手动解决这些连接,除非IDE对此有帮助。很可能是一团糟!