我很难搞清楚什么时候应该注入一个依赖.让我们从我的项目中使用一个简单的例子:
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;
}
}
Run Code Online (Sandbox Code Playgroud)
(不是生产质量!)
ICompanyDetailProvider负责CompanyDetail为消费者提供s的实例.具体实施CompanyDetailProvider由补水的情况下,确实是CompanyDetail从使用一个文件Hydrator<T>,它使用反射来填充的情况下,T从来源IDataReader.显然CompanyDetailProvider依赖于DataReaderFactory(返回OleDbDataReader给定文件路径的实例)和Hydrator.是否应注入这些依赖关系?注射是否正确FilePathProvider?我应该检查什么品质来决定是否应该注射它们?