Ich verwende Ninject als IoC-Container in meinem Projekt. Ich habe folgende Klasse:Convention-basierte Bindung von Konstruktor String-Argumente mit Ninject
public class SomeRepository:ISomeRepository
{
public SomeRepository(string someDatabaseConnectionString)
{
// some code here..
}
}
In meiner Anwendung Einstellungen Datei habe ich Verbindungszeichenfolge namens "someDatabase". Standardmäßig sollte die eine folgende Konfiguration hinzufügen, um diese Verbindungszeichenfolge in den Konstruktor zu injizieren:
kernel.Bind<ISomeRepository>()
.To<SomeRepository>()
.WithConstructorArgument("someDatabaseConnectionString", connString);
Aber ich möchte Bindung solcher Strings herkömmlichen umzusetzen berechnet. Werte für alle Konstruktorparameter des Stringtyps, deren Name mit "ConnectionString" endet, sollten dem Konfigurationsabschnitt connectionStrings der Anwendung entnommen und automatisch eingefügt werden. Ich möchte ähnliche Konvention für appSettings Abschnitt auch implementieren. Dieser Ansatz wird in näheren Einzelheiten in Mark Seemans Artikel "Primitive Dependencies" (Abschnitt "Konventionen für Grundelemente") beschrieben. Castle Windsor Container wurde in Beispielen verwendet.
Ist es möglich, solche Konventionen mit Ninject zu implementieren und was ist der beste Weg, dies zu tun? Ich habe ninject.extensions.conventions bereits ausprobiert, scheint aber keine solche Funktionalität zu haben, oder?
Können Sie ConfigurationManager.AppSettings ["someDatabaseConnectionString"] verwenden? – Ben
Momentan verwende ich ConfigurationManager.AppSettings ["someDatabaseConnectionString"]. Aber stellen Sie sich vor, Sie haben 20 oder mehr Klassen, die von Verbindungszeichenfolgen abhängig sind. Ich möchte keine spezifische Regel für jede dieser Klassen schreiben, ich möchte Abhängigkeiten automatisch injizieren. –