关于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()作用相关推荐

  1. VMware虚拟机文件夹中各文件作用详解

    VMware虚拟机文件夹中各文件作用详解 虚拟机的文件管理由VMware Workstation来执行. 一个虚拟机一般以一系列文件的形式储存在宿主机中, 这些文件一般在由workstation为虚拟 ...

  2. Science:亚硝酸盐氧化细菌在黑暗海洋中的主要作用

    文章目录 亚硝酸盐氧化细菌在黑暗海洋中的主要作用 写在前面 摘要 热心肠日报 背景 结果 图1 非全长16S rRNA基因序列的系统发育树 图2 通过募集宏基因组片段的方法确定亚硝酸盐氧化细菌单扩增基 ...

  3. 丰度决定了细菌在复杂群落中的功能作用

    本文转载自"微生态笔记",已获授权 标题:Abundance determines the functional role of bacterial phylotypes in c ...

  4. tensorflow2.0中valid_data的作用是在训练的过程对对比训练数据与测试数据的准确率 损失率,便于判断模型的训练效果:是过拟合还是欠拟合(过拟合)

    tensorflow2.0中valid_data的作用是在训练的过程对对比训练数据与测试数据的准确率,便于判断模型的训练效果:是过拟合还是欠拟合 过拟合:训练数据的准确率较高而测试数据的准确率较低 欠 ...

  5. C#中构造函数的作用

    C#中构造函数的作用 共同点: 都是实例化对象,初始化数据的 默认构造是说所有的类都从祖先object那继承了空参的构造方法,你不写与写空参构造都存在,而有参数的构造一般是自己写的,写就有不写就没有, ...

  6. python里dir是什么意思_python中dir什么作用

    python中dir的作用是:1.dir函数传入数据类型返回该数据类型的所有内置方法:2.dir函数传入模块名返回该模块的所有属性和方法. dir() 内置函数的作用 python 内置方法有很多,无 ...

  7. 浅析SEO优化中标签的作用?

    目前,已经有很多企业网站有专门的优化人员来进行SEO优化,在网站SEO优化的过程中会使用到很多标签来利于搜索引擎的读取,提升网站的排名和权重.就以大连网龙科技旗下产品云霸屏为例来讲,云霸屏作为一款全网 ...

  8. Hibernate 中lazy的作用

    Hibernate 中lazy的作用 上一篇 / 下一篇  2009-06-24 20:02:20 / 个人分类:java 查看( 506 ) / 评论( 2 ) / 评分( 5 / 0 ) < ...

  9. 【Android 逆向】Android 进程注入工具开发 ( 调试进程中寄存器的作用 | 通过 EIP 寄存器控制程序运行 | EIP 寄存器的存档与恢复 )

    文章目录 一.调试进程中寄存器的作用 二.通过 EIP 寄存器控制程序运行 三.EIP 寄存器的存档与恢复 一.调试进程中寄存器的作用 内存是一个线性结构 , 将动态库加载到内存中后 , 每个动态库文 ...

最新文章

  1. 赠票 | 互联网大厂的数据治理与资产管理实战 | DAMS 2020
  2. 【Android 异步操作】Android 线程切换 ( 判定当前线程是否是主线程 | 子线程中执行主线程方法 | 主线程中执行子线程方法 )
  3. Python面向对象程序设计之抽象工厂模式之二-一个更加pythonic的抽象工厂
  4. 从初创公司的角度来看微服务
  5. 【CyberSecurityLearning 51】渗透测试方法论+渗透测试流程
  6. 帧同步_什么是帧同步什么是状态同步
  7. sht20温湿度传感器原理图_温湿度传感器在孵化行业怎么应用
  8. echarts地图 编辑颜色
  9. uilabel 自行撑开高度_IOS UILabel自適應里面的文字,自動調整寬度和高度的
  10. linux的挂载的问题,重启后就挂载就没有了
  11. 运营商利润不均衡(转)
  12. Win10 - 下方【任务栏】- 颜色设置方法
  13. 组态王、力控等传统组态软件通过互联网远程监控PLC
  14. 为什么打印机打印照片模糊_我用打印机打印照片为什么不清楚?应该怎样调 – 手机爱问...
  15. 全国24省50万亿元投资在路上:后疫情时代碰撞新基建,AI难再“一招鲜”
  16. 【论文精读】Grounded Language-Image Pre-training(GLIP)
  17. 个别网站打不开,但是别人能打开,手机能打开
  18. 09年河南高考零分作文:兔子,你就是一个傻B
  19. 垃圾小白羊leetcode刷题记录1
  20. 超好用的在线编程IDE——CS50

热门文章

  1. 2022考研数学李永乐复习全书pdf版-基础篇(数一二三通用)
  2. SSM上传,下载,在线播放视频
  3. 华为计算机笔记本的配置,华为笔记本电脑大全
  4. 华为笔记本linux驱动支持,华为笔记本电脑对Linux 5.5内核的支持得到改善
  5. c语言字符串之拼接函数
  6. 【ctfshow BJDctf2020 encode】
  7. 论文检索你应该知道的那些事
  8. 前端的Docker入门与实践
  9. 李宏毅课程-人类语言处理1-课程综述(上)
  10. 中兴路由器中RIP路由的配置