gpt4 book ai didi

c# - 如何解析 Autofac 中的依赖项列表?

转载 作者:行者123 更新时间:2023-11-30 21:58:12 24 4
gpt4 key购买 nike

我想要注册类型,而不是解析类型,然后使用解析值注册实例。像这样:

//Register type:
builder.RegisterType<ValidateImportMandatoryColumns>().Named<IValidateImport>("MandatoryColumn").As<IValidateImport>();
builder.RegisterType<ValidateImportNonMandatoryColumns>().Named<IValidateImport>("NonMandatoryColumns").As<IValidateImport>();

//Resolve
var t1 = Container.ResolveNamed<IValidateImport>("MandatoryColumn");
var t2 = Container.ResolveNamed<IValidateImport>("NonMandatoryColumns");

//Create list with resolved values:
List<IValidateImport> allValidators = new List<IValidateImport>(){t1,t2};

//Register Instance:
builder.RegisterInstance(allValidators).As<List<IValidateImport>>();

这是行不通的。我无法解决,只能重新注册。你知道如何用 Autofac 做到这一点吗?也许方法不对,所以如果您有更好的主意,请告诉我。 目标是注入(inject)使用相同接口(interface)的不同类型的验证器列表

最佳答案

Autofac 内置了对收集的支持。如果你想解决所有IValidateImport , 你可以解决 IEnumerable<IValidateImport>

var allValidators = container.Resolve<IEnumerable<IValidateImport>>(); 

参见 Implicit Relationship Types了解更多信息。


顺便说一句,如果你想更新一个容器,这里不需要,你可以使用下面的一段代码。

var builder = new ContainerBuilder(); 
// do some registration

var container = builder.Build();


var updater = new ContainerBuilder();
// do other registraitons

// update the container
updater.Update(container);

关于c# - 如何解析 Autofac 中的依赖项列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30256713/

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