gpt4 book ai didi

c# - 配置 autofac 容器

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

如何在困难的情况下配置 DI Container?

有3个实体

class First: IFirst
public First (ISecond second)
{}
class Second : ISecond
public Second (IThird third, IOther other)
{}

需要创建第一个。但同时:

  1. ITird必须由Autofac根据规则配置创建。
  2. IO其他必须由我给

我认为它会起作用:

auto.RegisterType<First>()
.WithParameter("second", new Second (auto.Resolve<IThird>(), new MyOther(myValue)))

但是没有 ContainerBuilder Resolve 方法!

如何做到这一点?

最佳答案

您无法使用 ContainerBuilder 解析服务,但您可以使用另一个带有委托(delegate)参数的重载,这将使您能够访问容器。

cb.RegisterType<First>()
.WithParameter((pi, c) => pi.Name == "second",
(pi, c) => new Second(c.Resolve<IThird>(), new MyOther(myValue)));

cb.RegisterType<First>()
.WithParameter((pi, c) => pi.Name == "second",
(pi, c) => c.Resolve<ISecond>(TypedParameter.From<MyOther>(myValue)));

关于c# - 配置 autofac 容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30865458/

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