Ich möchte zwei verschiedene Injection-Fabriken für den gleichen Typ registrieren, zum Beispiel könnte es die beiden Registrierungen unten sein.Einheit wählen Sie eine andere Injektion Fabrik
container.RegisterType<BaseSearchProvider>(
new HierarchicalLifetimeManager(),
new InjectionFactory(c =>ExamineManager.Instance.SearchProviderCollection["Setting 1"]));
container.RegisterType<BaseSearchProvider>(
new HierarchicalLifetimeManager(),
new InjectionFactory(c => ExamineManager.Instance.SearchProviderCollection["Setting 2"]));
Für jetzt, foreach Typ ich manuell meine Konstruktionen registrieren. Ich habe verschiedene Dienste, aber einige Dienste müssen die erste Registrierung und andere die zweite Registrierung verwenden? Gibt es eine Möglichkeit dies durchzuführen, indem Sie ein "Profil" wie dieses verwenden?
container.RegisterType<IMeetingSearchService>("using Setting 1")
Das einzige, was ich jetzt denke ab als die Lösung ist, die BaseSearchProvider zu erben und diese Art zu registrieren, so dass ich zwei verschiedene Typen registrieren können und passen alle meine Konstrukteure mit diesem, so dass ich auch don‘ Ich brauche diesen Selektor. Aber vielleicht gibt es einen anderen Weg?
Danke ... Ich werde das ein bisschen später testen ... Aber Wenn ich zwei Klassen ableiten muss, dann ist es nutzlos, wenn ich es gut verstehe, da ich diese beiden Klassen einfach bei meiner Injektionsfabrik registrieren kann? –
Das Einführen einer Fabrik in eine Registrierung verstößt gegen meine Sicht der Umkehrung der Kontrolle. Diese Factory muss in der Klasse aufgelöst werden, in der Sie sie verwenden möchten. Deshalb brauchen wir konkrete Klassen, um der Fabrik mitzuteilen, welche spezifischen Einstellungen wir benötigen. – PolkaHard