gpt4 book ai didi

c# - 如何在运行时在 Autofac 中定义嵌套对象的值

转载 作者:太空宇宙 更新时间:2023-11-03 10:39:59 24 4
gpt4 key购买 nike

假设我有以下层次结构。

class PersonWithJacket
{
public PersonWithJacket(Jacket jacket)
{
}
}

class Jacket
{
public Jacket(string brand)
{
}
}

我在我的 Autofac 容器中注册了这些类

        containerBuilder.RegisterType<PersonWithJacket>();
containerBuilder.RegisterType<Jacket>();

在运行时,我想解析一个 PersonWithJacket 对象,并且我想定义嵌套 Jacket 类的 string brand 构造函数参数。我的第一种方法是像这样使用 NamedParameter:

        var personWithJacket = container.Resolve<PersonWithJacket>(new NamedParameter("brand", "TheBrand"));

我将其解读为“解析 PersonWithJacket 对象,如果遇到名为‘brand’的构造函数参数,请使用值‘TheBrand’”,但无法解析字符串参数。

有没有办法在运行时定义嵌套对象的构造函数参数的值?

最佳答案

哦,没关系。 ResolvedParameter 还不错。

        using (var scope = container.BeginLifetimeScope()) {
var someDynamicString = "Brand B";

var personDude = scope.Resolve<PersonWithJacket>(new ResolvedParameter(
(pi, ctx) => pi.ParameterType == typeof(Jacket),
(pi, ctx) => ctx.Resolve<Jacket>(new NamedParameter("name", someDynamicString))));
}

关于c# - 如何在运行时在 Autofac 中定义嵌套对象的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25734469/

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