首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >[Boost].DI装饰器模式

[Boost].DI装饰器模式
EN

Stack Overflow用户
提问于 2017-12-13 21:47:41
回答 1查看 194关注 0票数 0

可以用Boost.DI库创建装饰器模式吗?

代码语言:javascript
复制
struct IFoo {};
struct Foo : IFoo { };

struct Decorator : IFoo
{
    explicit Decorator(shared_ptr<IFoo> foo) : foo(foo) {}

    shared_ptr<IFoo> foo;
};

auto injector = boost::di::make_injector(???);

如何设置注入器,使injector.create()返回一个有效的装饰器实例?

EN

回答 1

Stack Overflow用户

发布于 2017-12-13 21:47:41

我找到了使用带注释的构造函数注入和命名参数的解决方案,但我可能缺少一个更优雅的解决方案。

代码语言:javascript
复制
auto decoratee = [] {};

namespace boost {
    namespace di {
        template<>
        struct ctor_traits<Decorator>
        {
            BOOST_DI_INJECT_TRAITS((named = decoratee) std::shared_ptr<IFoo>);
        };
    }
}

namespace di = boost::di;

auto injector = di::make_injector(
    di::bind<IFoo>().named(decoratee).to<Foo>(),
    di::bind<IFoo>().to<Decorator>());
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47794568

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档