我非常喜欢将 Unity 用于 .NET 应用程序以在大型代码库中保持代码模块和依赖项“可管理”。我多年来一直使用 .NET 将程序集放入主程序的程序目录并重新配置 IoC 配置文件(通常是 .exe.config 文件),将新行为注入程序而无需重新编译主程序。
但是,我已经开始着手为 Windows 应用商店以及更重要的 Windows IoT 编写通用应用程序——但是由于这些应用程序在编译过程中被“打包”,我发现很难理解如何最好地继续这样做。
一种可能的选择是编译“模块”(PCL/通用类库)并将它们(及其依赖项)作为“内容”文件包含在通用应用程序中,然后在启动期间使用反射从这些程序集中加载类型通过反射的程序。
另一种选择是在编译之前将所有模块及其依赖项包含到主程序的项目引用中,但使用“穷人的依赖注入对注册和解决方案进行硬编码”,但这对我来说真的是错误的——我最好保留如果可能的话,分离依赖关系?
有任何想法吗...?
PS。我不以任何方式与 Unity 绑定,如果有另一个 IoC 库在这个平台上做得更好,那很好 - 但 Unity 是我已经知道和喜爱的!