Autofac在xml配置中定义方法注入

时间:2015-11-12 21:37:01

标签: c# xml autofac

我正在使用Autofac xml配置文件来注册一些类,例如:

<?xml version="1.0" encoding="utf-8" ?>
  <autofac defaultAssembly="ChainOfResponsibilities">
   <components name="0">
    <type>ChainOfResponsibilities.ClassA, ChainOfResponsibilities</type>
    <services name="0" type="ChainOfResponsibilities.IClassA" />
    <InstanceScope>perlifetimescope</InstanceScope>
    <injectProperties>true</injectProperties>
   </components>
  </autofac>

现在,我想将此类注入另一个类中的方法,该类也在同一个xml配置文件中注册。换句话说,我正在尝试使用xml配置文件

实现以下代码的相同结果
 builder.Register(c =>
        {
            var chainManager = new ChainManager();
            var chainList = new List<Chain> { new Chain(c.Resolve<IClassA>)};
            chainManager.AddChain(chainList);
            return chainManager;
        });

我考虑过使用属性注入或元数据,但没有运气得到我想要的结果。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

配置机制很方便,但它并不意味着功能特性与代码的灵活性兼容。

它不支持方法注入,lambda注册或生命周期事件处理程序,这对于从您的示例中获取AddChain这样的方法是必需的。

您可能需要保留代码来执行方法注入,并且只需要放置&#34;链&#34;配置中的项目。