将 boost-di 与配置文件和共享库一起使用

Using boost-di with configuration file and shared libraries

本文关键字:一起 共享 boost-di 配置文件      更新时间:2023-10-16

我正在计划一个通过boost di使用依赖注入的c ++项目。在我看来,我也需要一个动态加载库的机制,以便能够真正受益于依赖注入。

因此,我考虑使用boost dll来使用独立于平台的共享库机制。

对于依赖配置,我考虑通过提升属性树使用 INI 文件。

您认为这种方法有什么主要缺点吗? 还是有另一个独立于平台的机制/库?

感谢您的意见 安德烈亚斯

有一种机制可以在运行时决定使用哪种实现。但是由于 Boost DI 的编译时方法,在设计上似乎不打算将其与动态库一起使用。

对于纯编译时注入,它看起来非常智能且易于使用。对于我的问题,这似乎不是正确的解决方案。

在C++项目开发过程中,我必须找到一个C++的DI框架。

经过一些调查和评估,并根据我们的要求(详见下文),我们发现皮下注射框架适合我们的需求。

我们的标准(除了框架应递归注入实例的基本标准!!

  1. 非侵入式(不需要像谷歌水果和其他库所要求的那样用"装饰"宏弄脏现有代码......)。
  2. 支持单例实例
  3. 支持可配置实例化(使用 lambda)
  4. 支持容器\喷油器组成
  5. 通用可共享容器\注入器,以支持模块(静态或动态)。顺便说一句,我同意

正如Andreas所回答的那样,Boost-DI不适合,因为它是大量模板化的,并且正如这个问题所回答的那样。 Boost-DI 不允许在运行时甚至编译时真正组合容器,除非您与根注入器共享头文件。它侵犯了模块的"隐私"(因为您需要发布它们才能注入它们)。 皮下注射允许配置容器并创建子容器。容器与类型(不是模板)无关,因此可以在运行时共享它。 顺便说一句,这也解决了这个问题