Ich habe Schwierigkeiten herauszufinden, wann eine Abhängigkeit injiziert werden sollte. Lassen Sie uns einfach mit einem einfachen Beispiel aus meinem Projekt arbeiten:
class CompanyDetailProvider : ICompanyDetailProvider {
private readonly FilePathProvider provider;
public CompanyDetailProvider(FilePathProvider provider) {
this.provider = provider;
}
public IEnumerable<CompanyDetail> GetCompanyDetailsForDate(DateTime date) {
string path = this.provider.GetCompanyDetailFilePathForDate(date);
var factory = new DataReaderFactory();
Func<IDataReader> sourceProvider = () => factory.CreateReader(
DataFileType.FlatFile,
path
);
var hydrator = new Hydrator<CompanyDetail>(sourceProvider);
return hydrator;
}
}
(Keine Produktionsqualität!)
ICompanyDetailProvider
ist verantwortlich für die Bereitstellung von Instanzen von CompanyDetail
s für die Verbraucher. Die konkrete Umsetzung CompanyDetailProvider
tut dies durch Hydratisierung von Instanzen von CompanyDetail
aus einer Datei mit einer Hydrator<T>
die Reflexion verwendet, um Instanzen von T
aus einem IDataReader
. Eindeutig CompanyDetailProvider
ist abhängig von DataReaderFactory
(die Instanzen von OleDbDataReader
mit einem Pfad zu einer Datei) und Hydrator
. Sollten diese Abhängigkeiten injiziert werden? Ist es richtig, Folgendes zu injizieren FilePathProvider
? Welche Eigenschaften prüfe ich, um zu entscheiden, ob sie injiziert werden sollten?