gpt4 book ai didi

Autofac 惰性类型参数

转载 作者:行者123 更新时间:2023-12-02 16:09:35 24 4
gpt4 key购买 nike

Autofac中是否可以使TypedParameter变得懒惰?更重要的是,我在注入(inject)参数时需要访问容器。代码可能如下所示:

builder.RegisterType<RootService>()
.WithParameter(TypedParameter.From(c => c.Resolve<IChildService>(key)));

更新

根据尼克的回答,我创建了以下辅助方法:

public static class TypedResolvedParameter 
{
public static ResolvedParameter From<T>(Func<IComponentContext, T> factory)
{
return new ResolvedParameter(
(pi, c) => pi.ParameterType == typeof(T),
(pi, c) => factory(c));
}
}

最佳答案

您正在寻找 ResolvedParameter,它也可用作 WithParameter() 的重载:

builder.RegisterType<RootService>()
.WithParameter((pi, c) => pi.ParameterType == typeof(IChildService),
(pi, c) => c.ResolveNamed<IChildService>(key));

关于Autofac 惰性类型参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5320890/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com