是的,我知道,最好使用构造函数注入,而且我大部分时间都在使用它,但是在这种情况下,我喜欢使用属性注入:
我有一个存储库基类,它具有数据库工厂的依赖项以及读取应用程序设置的服务(ConfigurationManager 的抽象)
public abstract class RepositoryBase(){
public IDatabaseFactory DatabaseFactory { get; set; }
public IAppConfigService AppConfig { get; set; }
protected Database Db
{
get
{
var db = DatabaseFactory.Get();
... not relevant code ...
return db;
}
}
}
我不想在这里使用构造函数依赖项,因为这将迫使我将构造函数添加到我的所有存储库中,我可以这样做,但我不想这样做。更糟糕的问题是,如果出于某种原因我向 RespositoryBase 类添加了一个日志服务,我将不得不将此新依赖项添加到我所有存储库类的构造函数中,这并不酷。
我可以使用服务聚合之类的模式来避免修改 RepositoryBase 类,但这似乎太复杂了,我真的很喜欢让事情保持简单,这样每个人都可以理解发生了什么(包括我)。
那么,是否可以让 Nancy / TinyIOC 注入这些依赖项?