Ale*_*lex 7 .net c# dependency-injection inversion-of-control
(这个问题不依赖于特定的IoC框架,因此我的示例中的接口和类型是元类型.只需用适合您喜欢的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();
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,你是如何得到注射器的?我通常只是自己注册了注射器并注入了自己注射的类型,但我不确定这是否是正确的"模式".
mat*_*t b 14
你不应该绕过容器.
相反,您的入口点/ main方法会向容器询问它需要启动的对象 - 例如您的App对象/ bean.然后容器返回连接到的完整对象图App,允许您运行app.Run(),满足所有依赖项.
这是一个有点为对象的反模式是知道的容器,或者为每个对象是要求容器为它的依赖-如果你这样做,那么你有没有反转的控制,你有什么是不依赖注入-你仍然有对象要求他们需要什么,而不是给他们需要的东西.