Autofac官方文档翻译--注册组件--3属性和方法注入

Posted nimorl

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Autofac官方文档翻译--注册组件--3属性和方法注入相关的知识,希望对你有一定的参考价值。

官方文档:http://docs.autofac.org/en/latest/register/prop-method-injection.html

Autofac 属性和方法注入

虽然构造函数参数注入是为组件传递值的首选方法,你也可以使用属性或方法注入提供值。
属性注入使用可写入的属性,而不是构造函数的参数进行注入。方法注入通过调用一个方法设置依赖关系。

1、属性注入

如果是一个lambda表达式组件,使用一个对象来初始化:
builder.Register(c => new A { B = c.Resolve<B>() });

为了支持循环依赖,使用激活的事件处理程序:

builder.Register(c => new A()).OnActivated(e => e.Instance.B = e.Context.Resolve<B>());
如果是一个反射组件,使用PropertiesAutowired()修改注册属性:
builder.RegisterType<A>().PropertiesAutowired();
如果你有一个特定的属性和值需要连接,你可以使用WithProperty()修改:
builder.RegisterType<A>().WithProperty("PropertyName", propertyValue);

2、方法注入

调用一个方法来设置一个组件的值的最简单的方法是,使用一个lambda表达式组件和正确的调用激活处理方法。
builder.Register(c => {
  var result = new MyObjectType();
  var dep = c.Resolve<TheDependency>();
  result.SetTheDependency(dep);
  return result;
});
如果你不能使用一个lambda表达式注册,你可以添加一个激活事件处理程序(activating event handler
builder
  .Register<MyObjectType>()
  .OnActivating(e => {
    var dep = e.Context.Resolve<TheDependency>();
    e.Instance.SetTheDependency(dep);
  });

 

以上是关于Autofac官方文档翻译--注册组件--3属性和方法注入的主要内容,如果未能解决你的问题,请参考以下文章

Autofac--注册组件--3属性和方法注入

Autofac 4.0官方文档翻译开始

Autofac 4.0官方文档翻译2.新特性 / 发布说明

翻译Autofac的帮助文档1.入门指南

关于Autofac的文档翻译

[翻译]Autofac 解析服务