die folgende Klassenhierarchie gegeben:C++ Dependency Injection mit Injektions: "Entschlossenheit" Objekten eines Super-Typ
class AbstractPanel
{ }
class AbstractComponent : public AbstractPanel
{ }
class Component : public AbstractComponent
{ }
und die folgenden Hypodermischen DI Container:
Hypodermic::ContainerBuilder builder;
builder.registerType<Component>(CREATE(new Component()))->as<Component>()->named<Component>("bkgrd_param_component");
(... and adding it to "di_container")
Je nach Kontext, ein resolve() - Aufruf sieht wie folgt aus:
di_container->resolveNamed<AbstractComponent>("bkgrd_param_component")
oder
di_container->resolveNamed<AbstractPanel>("bkgrd_param_component")
Beide Aufrufe geben ein nullptr zurück, obwohl mein registriertes Objekt vom Typ "AbstractPanel" und "AbstractComponent" ist.
Wie muss ich das entwerfen? Ich kann die Klassenhierarchie nicht ändern, aber das Objekt abhängig von seinem Namen auflösen.
Hat jemand eine Idee?
Grüße, Vandahlen