假设我有课
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 容器实现它?
您在寻找吗推迟对象的解析 https://msdn.microsoft.com/en-us/library/dn507482(v=pandp.30).aspx?
class Foo : FooBase {
Lazy<IDbRepository> _db;
public Foo(Settings settings, Lazy<IDbRepository> db)
: base(settings) {
_db = db;
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)