gpt4 book ai didi

c# - 依赖注入(inject) : How to pass the injection container around?

转载 作者:太空狗 更新时间:2023-10-29 19:59:08 24 4
gpt4 key购买 nike

(这道题不依赖于特定的IoC框架,所以我的示例中的接口(interface)和类型都是元类型。只需将它们替换为您脑海中最喜欢的IoC框架的适当类型即可。)

在我的主要方法中,我通常设置我的容器做这样的事情:

static void Main()
{
IInjector in = new Injector();
in.Register<ISomeType>().For<SomeType>();
in.Register<IOtherType().For<OtherType>();
...

// Run actual application
App app = in.Resolve<App>();
app.Run();
}

我的问题是,如何发送 Injector?我通常只是向自身注册注入(inject)器并将其注入(inject)到它们自己将要进行注入(inject)的类型中,但我不确定这是否是正确的“模式”。

最佳答案

你不应该传递容器。

相反,您的入口点/main 方法向容器询问它需要启动的对象 - 例如您的 App 对象/bean。然后容器返回连接到 App 的完整对象图,这允许您运行 app.Run(),所有依赖项都满足。

让对象知道容器,或者让每个对象向容器询问它的依赖关系,这有点反模式 - 如果你这样做,那么你没有反转控制和你所拥有的不是依赖注入(inject)——你仍然有对象询问他们需要什么,而不是被给予他们需要的东西。

关于c# - 依赖注入(inject) : How to pass the injection container around?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2539895/

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