Wenn es eine einzige Eins-zu-Eins-Abbildung in der Einfachen Injector zu machen, gibt es praktisch nur eine Methode:
Container.Register(Type serviceType, Type implementationType, Lifestyle lifestyle);
Alle anderen Methoden sind nur bequem ov Erlaubt oder "Shortcuts" zu dieser Methode. Das folgende Verfahren zum Beispiel:
Container.Register<TService, TImplementation>(Lifestyle)
fällt schließlich zurück in die nicht-generischen Überlastung durch Register(typeof(TService), typeof(TImplementation), lifestyle)
aufrufen.
Das gleiche gilt für Überlastungen, die in einem Lifestyle
nicht nehmen:
Container.Register<TService, TImplementation>()
Sie nur vorwärts der Anruf von der bestimmten Lebensstil für die gegebene Implementierung Typ liefert, die -unter Standard configuration- ist der vorübergehender Lebensstil: Register<TService, TImpementation>(Lifestyle.Transient)
.
Und es gibt mehrere Überladungen, die eine Verknüpfung Registrierung für Betontypen ermöglichen, wie zum Beispiel:
Container.Register<TConcrete>()
Diese Methode um den Anruf zu Register<TConcrete, TConcrete>()
weiterleitet. Mit anderen Worten, TConcrete
wird für TService
und TImplementation
geliefert. Dieser Anruf endet schließlich als Register(typeof(TConcrete), typeof(TConcrete), Lifestyle.Transient)
.
So lange Geschichte kurz, lassen Sie die folgenden Methoden Sie einen konkreten Typ mit einem Lebensstil registrieren:
Register<TConcrete>(Lifestyle.Scoped)
Register<TConcrete, TConcrete>(Lifestyle.Scoped)
Register(typeof(Concrete), typeof(Concrete), Lifestyle.Scoped);
weitere Informationen benötigt – r3wt
Ich habe bereits ein Beispiel für den Code zur Verfügung gestellt, was ich suche zu tun , es gibt keine passende Signatur in SimpleInjector. Ich kann nicht wirklich mehr Informationen liefern, es sei denn, Sie können klären, worüber Sie mehr Informationen benötigen. –