0

次のクラス階層が与えられた場合:

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 を返します。

これをどのように設計する必要がありますか?クラス階層を変更することはできませんが、名前に応じてオブジェクトを解決したいと考えています。

誰かアイデアがありますか?

よろしく、ヴァンダーレン

4

1 に答える 1