Autofac中文文档--一、注册组件--2传递注册参数
来源:互联网 发布:犀牛软件建模 编辑:程序博客网 时间:2024/05/17 05:04
官方文档:http://docs.autofac.org/en/latest/register/parameters.html
二、传递注册参数
当你注册组件时能够提供一组参数,可以在解析基于组件的服务时使用。(如果你宁愿在解析时提供参数,你可以这样做)。
1、有效的参数类型(Available Parameter Types)
Autofac提供数个不同的参数匹配策略:
- NamedParameter - 通过名称匹配目标参数
- TypedParameter - 通过类型匹配目标参数(需要精确匹配类型)
- ResolvedParameter - 灵活的参数匹配
NamedParameter
和TypedParameter
提供唯一不变的值
ResolvedParameter
可以作为从容器提供动态检索值的一种方法,如通过名称解析服务。
2、反射组件参数(Parameters with Reflection Components)
当注册反射组件时,该类型的构造函数可能需要一个参数,此参数不能从容器解析,你需要使用一个参数在注册的时候提供这个值。
public class ConfigReader : IConfigReader{ public ConfigReader(string configSectionName) { // 存储配置的节点名称 } // ...读取基于节点名称的配置}
你可以使用lambda表达式来注册:
builder.Register(c => new ConfigReader("sectionName")).As<IConfigReader>();
或者你可以在反射组件注册时传入一个参数:
// 使用一个命名参数:builder.RegisterType<ConfigReader>() .As<IConfigReader>() .WithParameter("configSectionName", "sectionName");// 使用一个类型参数:builder.RegisterType<ConfigReader>() .As<IConfigReader>() .WithParameter(new TypedParameter(typeof(string), "sectionName"));// 使用一个解析参数:builder.RegisterType<ConfigReader>() .As<IConfigReader>() .WithParameter( new ResolvedParameter( (pi, ctx) => pi.ParameterType == typeof(string) && pi.Name == "configSectionName", (pi, ctx) => "sectionName"));
3、Lambda表达式组件参数(Parameters with Lambda Expression Components)
使用表达式组件注册,不是在注册时传入参数,你可以在服务解析时传入参数。
在组件注册表达式中,你可以通过改变委托签名使用传入参数进行注册,代替仅仅接收一个IComponentContext参数,一个IComponentContext 和 IEnumerable<Parameter>参数:
// 使用两个参数来注册委托// c = The current IComponentContext to dynamically resolve dependencies// p = An IEnumerable<Parameter> with the incoming parameter setbuilder.Register((c, p) => new ConfigReader(p.Named<string>("configSectionName"))) .As<IConfigReader>();
当你解析参数时,你的lambda将使用这些参数来传入值:
var reader = scope.Resolve<IConfigReader>(new NamedParameter("configSectionName", "sectionName"));
0 0
- Autofac中文文档--一、注册组件--2传递注册参数
- Autofac中文文档--一、注册组件--1注册概念
- Autofac中文文档--一、注册组件--4组件扫描
- Autofac官方文档(四)【注册组件之将参数传递给注册者】
- Autofac中文文档--一、注册组件--3属性和方法注入
- Autofac官方文档(三)【注册组件之注册概念】
- Autofac官方文档(六)【注册组件之程序集扫描】
- Autofac中文文档--二、解析服务--1解析参数传递
- Autofac官方文档翻译——(二)组件注册(未完)
- Autofac官方文档(五)【注册组件之属性和方法注入】
- OnClick注册事件传递参数
- 【.Net码农】【MVC】Ioc容器Autofac系列(3)-- 三种注册组件的方式
- 注册组件
- ATL组件中文路径注册问题 (转)
- ATL组件中文路径注册问题辨析
- 【反射】——Autofac 类型注册
- AutoFac文档2
- Autofac官方文档(一)【开始】
- 连接第二个 insance 到 first_local_net - 每天5分钟玩转 OpenStack(83)
- 基础知识整理-1
- 看看CSDN能不能发布文章
- 微信图片上传 invalid credential, access_token is invalid or not latest
- 学习shell脚本(一)
- Autofac中文文档--一、注册组件--2传递注册参数
- 如何从0构造自己的系统?
- [LeetCode136]Single Number
- 学习日记20160905
- 143. Reorder List
- 安卓中xml的序列化
- 正则表达式
- python学习(1) - 冒泡法
- 在VMware的虚拟机平台上如何进行NAT网络设置