Autofac组件的实例范围具体是怎样的?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1336个文字,预计阅读时间需要6分钟。
实例范围决定如何在请求之间共享服务。例如,使用Instance选项,每次请求服务都会返回一个新实例。
实例范围决定如何在请求之间共享服务。
原文地址:docs.autofac.org/en/latest/lifetime/instance-scope.html
每个依赖一个实例
使用这个选项,每次请求服务都会返回一个新实例。使用 InstancePerDependency() 指定。这是默认选项。下面的代码,第2行和第3行是等价的。
var builder = new ContainerBuilder(); builder.RegisterType<Worker>(); builder.RegisterType<Worker>().InstancePerDependency();
下面的代码,每次循环都生成一个新的实例,一共生成 100 个实例。
using(var scope = container.BeginLifetimeScope()) { for(var i = 0; i < 100; i++) { var w = scope.Resolve<Worker>(); w.DoWork(); } }
单个实例
使用这个选项,在根范围或嵌套范围中请求服务,都返回同一个的实例。使用 SingleInstance() 指定。
本文共计1336个文字,预计阅读时间需要6分钟。
实例范围决定如何在请求之间共享服务。例如,使用Instance选项,每次请求服务都会返回一个新实例。
实例范围决定如何在请求之间共享服务。
原文地址:docs.autofac.org/en/latest/lifetime/instance-scope.html
每个依赖一个实例
使用这个选项,每次请求服务都会返回一个新实例。使用 InstancePerDependency() 指定。这是默认选项。下面的代码,第2行和第3行是等价的。
var builder = new ContainerBuilder(); builder.RegisterType<Worker>(); builder.RegisterType<Worker>().InstancePerDependency();
下面的代码,每次循环都生成一个新的实例,一共生成 100 个实例。
using(var scope = container.BeginLifetimeScope()) { for(var i = 0; i < 100; i++) { var w = scope.Resolve<Worker>(); w.DoWork(); } }
单个实例
使用这个选项,在根范围或嵌套范围中请求服务,都返回同一个的实例。使用 SingleInstance() 指定。

