gpt4 book ai didi

c# - Autofac 在运行时使用构造函数参数解析泛型类型

转载 作者:太空宇宙 更新时间:2023-11-03 14:49:20 25 4
gpt4 key购买 nike

我有一个通用类 Logger<TProvider> where TProvider : ILogProvider我想使用 Autofac 配置依赖注入(inject)。

这个类还有一个构造函数:

public Logger(LogType loggerType)

目前是这样使用的:

var logger = new Logger<Log4NetLogProvider>(LogType.CMS);

我想知道这是否可以依赖注入(inject),或者由于需要类型/构造函数参数而无法实现?

我知道 RegisterGeneric方法,例如:

builder.RegisterGeneric(typeof(Logger<>)).AsSelf()

我想知道如何告诉 autofac 哪个 TProvider传入并提供构造函数参数LogType ?或者这不是 DI 的良好候选者?

最佳答案

您可以在注册类型时尝试使用 WithParameter 扩展

//using named parameter
builder.RegisterGeneric(typeof(Logger<>))
.AsSelf()
.WithParameter("loggerType", LogType.CMS);

//OR - using typed parameter
builder.RegisterGeneric(typeof(Logger<>))
.AsSelf()
.WithParameter(new TypedParameter(typeof(LogType), LogType.CMS));

引用 Passing Parameters to Register

关于c# - Autofac 在运行时使用构造函数参数解析泛型类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52496013/

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