Autofac中的AsSelf()作用
关于Autofac中的AsSelf()具体有什么用,有点好奇查了文档了解了下
Services vs. Components
When you register components, you have to tell Autofac which services that component exposes. By default, most registrations will just expose themselves as the type registered:
// This exposes the service "CallLogger" builder.RegisterType<CallLogger>();
Components can only be resolved by the services they expose. In this simple example it means:
// This will work because the component // exposes the type by default: scope.Resolve<CallLogger>();// This will NOT work because we didn't // tell the registration to also expose // the ILogger interface on CallLogger: scope.Resolve<ILogger>();
You can expose a component with any number of services you like:
builder.RegisterType<CallLogger>().As<ILogger>().As<ICallInterceptor>();
Once you expose a service, you can resolve the component based on that service. Note, however, that once you expose a component as a specific service, the default service (the component type) is overridden:
// These will both work because we exposed // the appropriate services in the registration: scope.Resolve<ILogger>(); scope.Resolve<ICallInterceptor>();// This WON'T WORK anymore because we specified // service overrides on the component: scope.Resolve<CallLogger>();
If you want to expose a component as a set of services as well as using the default service, use the AsSelf
method:
builder.RegisterType<CallLogger>().AsSelf().As<ILogger>().As<ICallInterceptor>();
Now all of these will work:
// These will all work because we exposed // the appropriate services in the registration: scope.Resolve<ILogger>(); scope.Resolve<ICallInterceptor>(); scope.Resolve<CallLogger>();
一个是一个接口有多个实现,AsSelf()的话就是设置为默认的实现了。
参考文档说明
Autofac中的AsSelf()作用相关推荐
- VMware虚拟机文件夹中各文件作用详解
VMware虚拟机文件夹中各文件作用详解 虚拟机的文件管理由VMware Workstation来执行. 一个虚拟机一般以一系列文件的形式储存在宿主机中, 这些文件一般在由workstation为虚拟 ...
- Science:亚硝酸盐氧化细菌在黑暗海洋中的主要作用
文章目录 亚硝酸盐氧化细菌在黑暗海洋中的主要作用 写在前面 摘要 热心肠日报 背景 结果 图1 非全长16S rRNA基因序列的系统发育树 图2 通过募集宏基因组片段的方法确定亚硝酸盐氧化细菌单扩增基 ...
- 丰度决定了细菌在复杂群落中的功能作用
本文转载自"微生态笔记",已获授权 标题:Abundance determines the functional role of bacterial phylotypes in c ...
- tensorflow2.0中valid_data的作用是在训练的过程对对比训练数据与测试数据的准确率 损失率,便于判断模型的训练效果:是过拟合还是欠拟合(过拟合)
tensorflow2.0中valid_data的作用是在训练的过程对对比训练数据与测试数据的准确率,便于判断模型的训练效果:是过拟合还是欠拟合 过拟合:训练数据的准确率较高而测试数据的准确率较低 欠 ...
- C#中构造函数的作用
C#中构造函数的作用 共同点: 都是实例化对象,初始化数据的 默认构造是说所有的类都从祖先object那继承了空参的构造方法,你不写与写空参构造都存在,而有参数的构造一般是自己写的,写就有不写就没有, ...
- python里dir是什么意思_python中dir什么作用
python中dir的作用是:1.dir函数传入数据类型返回该数据类型的所有内置方法:2.dir函数传入模块名返回该模块的所有属性和方法. dir() 内置函数的作用 python 内置方法有很多,无 ...
- 浅析SEO优化中标签的作用?
目前,已经有很多企业网站有专门的优化人员来进行SEO优化,在网站SEO优化的过程中会使用到很多标签来利于搜索引擎的读取,提升网站的排名和权重.就以大连网龙科技旗下产品云霸屏为例来讲,云霸屏作为一款全网 ...
- Hibernate 中lazy的作用
Hibernate 中lazy的作用 上一篇 / 下一篇 2009-06-24 20:02:20 / 个人分类:java 查看( 506 ) / 评论( 2 ) / 评分( 5 / 0 ) < ...
- 【Android 逆向】Android 进程注入工具开发 ( 调试进程中寄存器的作用 | 通过 EIP 寄存器控制程序运行 | EIP 寄存器的存档与恢复 )
文章目录 一.调试进程中寄存器的作用 二.通过 EIP 寄存器控制程序运行 三.EIP 寄存器的存档与恢复 一.调试进程中寄存器的作用 内存是一个线性结构 , 将动态库加载到内存中后 , 每个动态库文 ...
最新文章
- 赠票 | 互联网大厂的数据治理与资产管理实战 | DAMS 2020
- 【Android 异步操作】Android 线程切换 ( 判定当前线程是否是主线程 | 子线程中执行主线程方法 | 主线程中执行子线程方法 )
- Python面向对象程序设计之抽象工厂模式之二-一个更加pythonic的抽象工厂
- 从初创公司的角度来看微服务
- 【CyberSecurityLearning 51】渗透测试方法论+渗透测试流程
- 帧同步_什么是帧同步什么是状态同步
- sht20温湿度传感器原理图_温湿度传感器在孵化行业怎么应用
- echarts地图 编辑颜色
- uilabel 自行撑开高度_IOS UILabel自適應里面的文字,自動調整寬度和高度的
- linux的挂载的问题,重启后就挂载就没有了
- 运营商利润不均衡(转)
- Win10 - 下方【任务栏】- 颜色设置方法
- 组态王、力控等传统组态软件通过互联网远程监控PLC
- 为什么打印机打印照片模糊_我用打印机打印照片为什么不清楚?应该怎样调 – 手机爱问...
- 全国24省50万亿元投资在路上:后疫情时代碰撞新基建,AI难再“一招鲜”
- 【论文精读】Grounded Language-Image Pre-training(GLIP)
- 个别网站打不开,但是别人能打开,手机能打开
- 09年河南高考零分作文:兔子,你就是一个傻B
- 垃圾小白羊leetcode刷题记录1
- 超好用的在线编程IDE——CS50