【问题标题】:Autofac define method injection in xml configurationAutofac在xml配置中定义方法注入
【发布时间】:2015-11-15 04:58:48
【问题描述】:

我正在使用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;
        });

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

有什么想法吗?

【问题讨论】:

    标签: c# xml autofac


    【解决方案1】:

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

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

    您可能必须保留代码来进行方法注入,并且只将“链”项放入配置中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-03
      • 2012-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多