给定以下类层次结构:
class AbstractPanel
{ }
class AbstractComponent : public AbstractPanel
{ }
class Component : public AbstractComponent
{ }
和以下皮下 DI 容器:
Hypodermic::ContainerBuilder builder;
builder.registerType<Component>( CREATE(new Component()) )->as<Component>()->named<Component>("bkgrd_param_component");
(... and adding it to "di_container")
根据上下文,resolve()-Call 看起来像这样:
di_container->resolveNamed<AbstractComponent>("bkgrd_param_component")
或者
di_container->resolveNamed<AbstractPanel>("bkgrd_param_component")
两个调用都返回一个 nullptr,尽管我注册的对象的类型都是“AbstractPanel”和“AbstractComponent”。
我该如何设计这个?我无法更改类层次结构,但想要解析对象,具体取决于它的名称。
有人有想法吗?
问候, 万达伦