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来处理这种情况
当使用带有lambda参数的Register
方法时,第一个参数是IComponentContext
,它是一个已构建的容器。
你可以这样做:
builder.Register(o => new CurrencyCache(o.Resolve<XXX>().DoSomething));
顺便说一句,要小心注册的范围,以避免自保依赖问题。