次のクラス階層が与えられた場合:
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")
Context に応じて、resolve()-Call は次のようになります。
di_container->resolveNamed<AbstractComponent>("bkgrd_param_component")
また
di_container->resolveNamed<AbstractPanel>("bkgrd_param_component")
私の登録済みオブジェクトは「AbstractPanel」と「AbstractComponent」の両方のタイプですが、両方の呼び出しは nullptr を返します。
これをどのように設計する必要がありますか?クラス階層を変更することはできませんが、名前に応じてオブジェクトを解決したいと考えています。
誰かアイデアがありますか?
よろしく、ヴァンダーレン