我正在用WinForms编写一个应用程序,我想知道是使用IoC还是使用容器。
我们正在编写的是一个文本编辑器,用于我们自己的基本风格语言,用于计算费用等等。它类似于Notepad++,但功能和调试器不多。
我想知道我应该使用容器还是IoC,我应该选择哪一个。作为一个WinForms应用程序,在启动时需要做很多事情(加载语法引擎、UI配置等),您认为我甚至可以使用IoC吗?
使用容器,我可以使它成为一个静态类,只需执行Container.GetInstance(),但是当一些类依赖于其他类时,我无法理解如何连接一个IoC。
我还有很多命令想要使用COmmand模式,所以定义一个ICommand,并为特定区域使用ITextCommand、IFormulaCalculationCommand、IDebugCommand进行扩展。我如何使用IoC从其中一个命令中获取Tab中的活动文档?
我现在很困惑,我很抱歉。
这里有几个简短的问题,如果你不能清楚地回答上面的话:)
发布于 2011-04-06 12:52:45
首先,"IoC“的意思是"倒置控制”,它是一个与http://en.wikipedia.org/wiki/Dependency_injection高度相关的概念(而不是一个具体的软件组件)。容器(是一个软件组件)是一个依赖注入容器。因此,不仅"IoC“和”容器“这两个无法比较的实体,它们也在同一个”营地“内。
因此,这个问题最好用“我是否应该在我的应用程序中使用一个DI容器?”。
有几个DI容器你可以选择:微软联合,城堡温莎和NInject是几个比较有名的(我还没有意识到Autofac到现在)。选择一个,然后继续前进;在你的情况下不会有实际的区别,如果需要的话,你总是可以相对容易地切换到另一个。
此外,容器的一个主要卖点是,您不需要将它们连接起来以构造具有深度依赖树的类。容器会自动解析和注入依赖项;只有在需要对象构造时,才需要帮助,并将特定值传递给构造函数。
最后,DI容器与命令模式或类似的东西之间没有任何关系。如果希望获得活动文档,那么只要在变量更改时将活动文档存储在其中,并在需要时读取该变量即可。这个容器根本没有进入它。
更新:向高度相关的问题哪些.NET依赖注入框架值得研究?添加链接
https://stackoverflow.com/questions/5566517
复制相似问题