将 boost-di 与配置文件和共享库一起使用
Using boost-di with configuration file and shared libraries
我正在计划一个通过boost di使用依赖注入的c ++项目。在我看来,我也需要一个动态加载库的机制,以便能够真正受益于依赖注入。
因此,我考虑使用boost dll来使用独立于平台的共享库机制。
对于依赖配置,我考虑通过提升属性树使用 INI 文件。
您认为这种方法有什么主要缺点吗? 还是有另一个独立于平台的机制/库?
感谢您的意见 安德烈亚斯
有一种机制可以在运行时决定使用哪种实现。但是由于 Boost DI 的编译时方法,在设计上似乎不打算将其与动态库一起使用。
对于纯编译时注入,它看起来非常智能且易于使用。对于我的问题,这似乎不是正确的解决方案。
在C++项目开发过程中,我必须找到一个C++的DI框架。
经过一些调查和评估,并根据我们的要求(详见下文),我们发现皮下注射框架适合我们的需求。
我们的标准(除了框架应递归注入实例的基本标准!!
- 非侵入式(不需要像谷歌水果和其他库所要求的那样用"装饰"宏弄脏现有代码......)。
- 支持单例实例
- 支持可配置实例化(使用 lambda)
- 支持容器\喷油器组成
- 通用可共享容器\注入器,以支持模块(静态或动态)。顺便说一句,我同意
正如Andreas所回答的那样,Boost-DI不适合,因为它是大量模板化的,并且正如这个问题所回答的那样。 Boost-DI 不允许在运行时甚至编译时真正组合容器,除非您与根注入器共享头文件。它侵犯了模块的"隐私"(因为您需要发布它们才能注入它们)。 皮下注射允许配置容器并创建子容器。容器与类型(不是模板)无关,因此可以在运行时共享它。 顺便说一句,这也解决了这个问题
相关文章:
- 将成员变量添加到共享库中的类中,不会破坏二进制兼容性吗
- 是否可以通过C++扩展强制多个python进程共享同一内存
- 在cuda线程之间共享大量常量数据
- 如何将enable-if与模板参数和参数包一起使用
- 如何将PERF_AMPLE_READ与mmap一起使用
- 如何将两个不同矢量的同一位置的两个元素组合在一起
- 将 boost::function 与指向派生类的共享指针的参数一起使用
- 将 boost-di 与配置文件和共享库一起使用
- 将现有的共享内存与qsharedMemory一起
- 将共享指针的别名构造函数与空共享指针一起使用C++
- 无法与GDB一起进入共享库中的函数
- 将共享库与dlopen一起使用-共享对象找不到加载程序导出的符号
- 将gcov与子进程和共享库一起使用时没有覆盖范围
- 将shared_ptr与通用注册表或共享对象存储一起使用.或不
- C++纠缠在一起的共享指针
- 它与共享指针(c++)一起正常工作吗
- 将includes与c++共享库一起使用
- 与我的程序一起分发共享对象
- 与MinGW一起建立精灵共享图书馆
- 将调用与共享指针链接在一起