Autofac.在生成过程中解决Func的依赖项

本文关键字:Func 依赖 解决 过程中 Autofac | 更新日期: 2023-09-27 18:30:01

我有一个类,它将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来处理这种情况

Autofac.在生成过程中解决Func的依赖项

当使用带有lambda参数的Register方法时,第一个参数是IComponentContext,它是一个已构建的容器。

你可以这样做:

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

顺便说一句,要小心注册的范围,以避免自保依赖问题。