博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
autofac文档:实例生命周期
阅读量:5738 次
发布时间:2019-06-18

本文共 1497 字,大约阅读时间需要 4 分钟。

AutoFac文档

目录

  1. 开始
  2. Registering components
  3. 控制作用域和生命周期
  4. 用模块结构化Autofac
  5. xml配置
  6. 与.net集成
  7. 深入理解Autofac
  8. 指导
  9. 关于
  10. 词汇表

实例生命周期

实例生命周期决定的在同一个服务的每个请求中实例是如何共享的。

当请求一个服务的时候,Autofac会返回一个单例 (single instance作用域), 一个新的对象 (per lifetime作用域) 或者在某种上下文环境中的单例。比如 一个线程 或者一个HTTP请求 (per lifetime 作用域)。

这条规则适用于显示调用Resolve从容器中检索对象或者容器中为了满足依赖而隐式实现的对象。

更深入的探讨请参考

Per Dependency

在其他容器中也称作瞬态或者工厂,使用Per Dependency作用域,服务对于每次请求都会返回单独的实例。

在没有指定其他参数的情况下,这是默认是作用域。

builder.RegisterType
();// orbuilder.RegisterType
().InstancePerDependency();

Single Instance

使用Single Instance作用域,所有对父容器或者嵌套容器的请求都会返回同一个实例。

builder.RegisterType
().SingleInstance();

Per Lifetime Scope

这个作用域适用于嵌套的生命周期。一个使用Per Lifetime 作用域的component在一个内最多有一个实例。

当对象特定于一个工作单元时,这个非常有用。比如,一个HTTP请求,每一个工作单元都会创建一个nested lifetime,如果在每一次HTTP请求中创建一个nested lifetime,那么其他使用 per-lifetime 的component在每次HTTP请求中只会拥有一个实例。

这种配置模型在其他容器中等价于per-HTTP-request, per-thread等。

builder.RegisterType
().InstancePerLifetimeScope();

的ASP.NET和WCF集成中,每一次web请求或者方法调用,InstancePerLifetimeScope会被默认附加到component上

上下文的

上下文作用域和per-lifetime作用域类似,但是对可见性提供更多显示的控制。

在大多数程序中,同一层次的容器嵌套代表一个工作单元,如果需要多层嵌套(例如global->request->transation),可以使用标签确保component在多层结构中的某一层共享。

builder.RegisterType
().InstancePerMatchingLifetimeScope(MyContextHierarchy.UserSession);

提供的标签和生命周期作用域是对应的。

var userSessionLifetime = container.BeginLifetimeScope();userSessionLifetime.Tag = MyContextHierarchy.UserSession;

转载于:https://www.cnblogs.com/wolegequ/archive/2012/06/09/2543487.html

你可能感兴趣的文章
Linux下导入SQL文件
查看>>
jsp中动态添加全选复选框
查看>>
iOS通过rumtime给类别添加动态属性
查看>>
Redis Set
查看>>
121 项目 005 笔记向 spring mvc 首页配置
查看>>
Android开发把项目打包成apk
查看>>
【转】Git详解之九 Git内部原理
查看>>
目前世界最流行的Web开发框架
查看>>
mysql误删除root用户或者忘记root密码时的解决办法
查看>>
圣杯布局(你听说过么?)
查看>>
点击按钮,浏览器返回上一页,离开页面提示
查看>>
Jenkins+Ansible+Gitlab自动化部署三剑客
查看>>
经典的软件开发哲学
查看>>
Session与Cookie
查看>>
hadoop2.6.0集群搭建
查看>>
wordpress 伪静态nginx设置
查看>>
Hive lateral view 和 explode 详解
查看>>
Spring 拦截器 学习
查看>>
Nginx Location配置总结
查看>>
数据库记录转换成json格式
查看>>