Autofac。在构建过程中解析Func的依赖项

时间:2016-01-11 17:16:52

标签: c# autofac

我有一个类,它以Func作为构造函数参数:

public CurrencyCache(Func<IEnumerable<Currency>> loadData)

Func基本上是缓存过期时调用的方法

当我在AutoFac中注册时,我需要指定方法。为此,我需要从容器中解析依赖关系。除了我不能,因为容器尚未建成

builder.Register(o => new CurrencyCache(<some code to resolve the class with the method I want to call>));

我不想手动将依赖图新建到这个类,因为它有几个层次,需要来自配置文件等的各种数据

所以我希望容器为我解决这个类

但正如我所说,容器还没有建成

有解决方法吗? Autofac是否有一些api来处理这种情况

1 个答案:

答案 0 :(得分:1)

当您将Register方法与lambda参数一起使用时,第一个参数是IComponentContext,它是一个构建容器。

你可以这样做:

builder.Register(o => new CurrencyCache(o.Resolve<XXX>().DoSomething));

顺便说一下,请注意注册范围以避免captive dependency issue