让我说我有一个clas
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容器实现它?
答案 0 :(得分:5)
您在寻找Deferring the Resolution of Objects吗?
class Foo : FooBase {
Lazy<IDbRepository> _db;
public Foo(Settings settings, Lazy<IDbRepository> db)
: base(settings) {
_db = db;
}
}