假设我有课:
class Foo : FooBase
{
public Foo(Settings settings, IDbRepository db)
: base(settings) {
this.db = db;
}
基本上 FooBase 通过构造函数接收设置并从配置文件加载一些配置。
然后我有实现 IDbRepository 的 MySQLRepository 类
class MySQLRepository : IDbRepository {
...
public MySQLRepository(IConfigurationRepository config) {
conn = new MySQLConnection(config.GetConnectionString());
}
...
}
在 Program.cs 中我有:
Foo foo = container.Resolve<Foo>();
问题在于 FooBase 的构造函数仅在所有其他依赖项加载后才会被调用。但直到调用 FooBase 构造函数后才会加载配置。
我的想法是创建 IDbRepository 和任何其他需要配置的接口的惰性实现。
这是个好主意吗? 如何用Unity容器实现它?
您是否在寻找推迟对象的解析?
class Foo : FooBase {
Lazy<IDbRepository> _db;
public Foo(Settings settings, Lazy<IDbRepository> db)
: base(settings) {
_db = db;
}
}