0

Ich habe einen Service-Konstruktor mit mehreren gleichen Typs Parameter AbhängigkeitenSimpleInjector benannten Parameter Registrierung

class Service{ 
    public void Service (String connectionStringOne, string connectionStringTwo) 
    {} 
} 

Wie kann ich in SimpleInjector Container diese Registrierung tun. Ich nahm an, dass ich RegisterConditional das Prädikat verwenden würde. z.B.

Container.RegisterConditional(typoef(string),"SQLConnectionString",Leftstyle.Singleton, pc => pc.ParameterName == "connectionStringOne") 
Container.RegisterConditional(typoef(string),"MDXConnectionStribng",Leftstyle.Singleton, pc => pc.ParameterName == "connectionStringTwo") 

jedoch die PredicateContext

+0

Ich verstehe Ihre Frage nicht. Kannst du es ausarbeiten? – Steven

+0

Entschuldigung, ich habe falsch gesagt. Bitte beachten Sie die überarbeitete Frage –

+0

Der Parametername kann unter Verwendung von 'c.Consumer.Target.Name' abgerufen werden, obwohl ich RegisterConditional wie folgt ablehne. Siehe meine Antwort für einen alternativen Ansatz. – Steven

Antwort

0

Sie 'ParameteName' nicht bieten sollte Ihren Dienst mit einem Werksbeauftragter registrieren:

container.Register<IService>(() => new Service("str1", "str2")); 
+0

Was ist, wenn anstelle von fest codierten Strings Session-Variablen die Werte enthalten, die übergeben werden sollen oder web.config? –

+0

@SimpleFellow das sind zwei sehr unterschiedliche Anwendungsfälle. Werte in der Datei web.config sind konstante Werte. Sie ändern sich nicht während der Lebensdauer der Anwendung. Sie sollten sie während des Startvorgangs aus der Konfiguration lesen und sie wie im obigen Beispiel übergeben. Das Zurückhalten eines Wertes von der Sitzung sollte hinter einer anwendungsspezifischen Abstraktion abstrahiert werden. Wenn Sie eine neue Frage mit weiteren Details zu Ihrem Fall veröffentlichen, werde ich versuchen, sie zu beantworten. – Steven

+0

Betrachten Sie einen Fall einer Klasse mit einem Konstruktor, der eine Zeichenfolge benötigt. Die Zeichenfolge, die benötigt wird, befindet sich in einer Sitzungsvariablen und wird für jeden Benutzer unterschiedlich sein. (verschiedene Sitzungen/unterschiedliche String-Werte/jeder Benutzer hat einen eindeutigen Wert). Was ist in diesem Fall zu tun? –

Verwandte Themen