• 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);
      });
  • 相关阅读:
    学点 C 语言(40): 函数 多参函数
    存取 ListBox 列表 回复 "徐强" 的问题
    博客园RSS订阅汇总
    博客园电子期刊2012年2月刊发布啦
    上周热点回顾(3.53.11)
    博客园电子期刊2012年3月刊发布啦
    上周热点回顾(3.264.1)
    上周热点回顾(3.193.25)
    上周热点回顾(4.24.8)
    上周热点回顾(2.273.4)
  • 原文地址:https://www.cnblogs.com/chiyueqi/p/autofac_injection.html
Copyright © 2020-2023  润新知