【发布时间】:2017-12-09 14:40:14
【问题描述】:
我正在尝试使用通用 Lazy 类来实例化具有 .net 核心依赖注入扩展的昂贵类。我已经注册了 IRepo 类型,但我不确定 Lazy 类的注册会是什么样子,或者它是否受支持。作为一种解决方法,我使用了这种方法http://mark-dot-net.blogspot.com/2009/08/lazy-loading-of-dependencies-in-unity.html
配置:
public void ConfigureService(IServiceCollection services)
{
services.AddTransient<IRepo, Repo>();
//register lazy
}
控制器:
public class ValuesController : Controller
{
private Lazy<IRepo> _repo;
public ValuesController (Lazy<IRepo> repo)
{
_repo = repo;
}
[HttpGet()]
public IActionResult Get()
{
//Do something cheap
if(something)
return Ok(something);
else
return Ok(repo.Value.Get());
}
}
【问题讨论】:
-
No (repository/context/...) 类应该在其构造函数中打开连接。
-
我无法控制的手段代价高昂。
标签: c# dependency-injection asp.net-core .net-core lazy-initialization