哪些C#/ .NET依赖注入框架值得研究?你能说出他们的复杂性和速度.
我们正在使用ASP.net MVC.
哪个是最好的DI框架Ninject或Unity?为什么?
在跟进基耶斯洛夫的说法是温莎确实比其他国际奥委会的多很多,我想了解这些国际奥委会如何叠起来反对对方,这温莎城堡带来的好处/附加设施.
有比较吗?有人可以帮助我理解Castle Windsor提供的其他IoC附加功能
structuremap dependency-injection castle-windsor ioc-container unity-container
我是DI和IoC的新手,我正在尝试决定学习哪个IoC容器.我已经看到了几个性能比较,其中引用的三个容器似乎表现得非常好.但是,我没有找到包含Hiro或Simple Injector的功能比较.Autofac的社区似乎是最大的,但Hiro和Simple Injector在基准测试中非常快,而Simple Injector尤其声称非常容易学习.也就是说,我不想学习一个并且必须切换到另一个因为功能集有限.出于这个原因,我倾向于Autofac,因为它相当成熟,功能齐全(这里和这里的好文章),也是最快的IoC容器之一.有没有人对这三个容器中至少有两个有过经验?你能提供任何功能比较吗?
.net dependency-injection inversion-of-control autofac simple-injector
我正在为新的.NET应用程序选择依赖注入框架.这些框架中有许多令人眼花缭乱的框架,包括Ninject,StructureMap,Unity,Castle Windsor,Spring.NET等等.我从不相信任何一个工具绝对比其他工具更好或更差; 它总是取决于背景和约束.
考虑到这一点,任何人都可以提供各种.NET依赖注入框架的优点和缺点,彼此相对吗?哪个更适合小项目,大项目等?对于哪些类型的项目,架构和开发团队,每个项目的工作效果最好还是不太好?那些与其中几个框架合作过的人的任何智慧都会非常有帮助......
我知道我可以使用预处理器指令C#来启用/禁用某些代码的编译.
如果我在同一个文件中定义一个指令,它可以正常工作:
#define LINQ_ENABLED
using System;
using System.Collections.Generic;
#if LINQ_ENABLED
using System.Linq;
#endif
Run Code Online (Sandbox Code Playgroud)
现在,我用于C++将所有这些配置指令放在单个头文件中,并将其包含在我需要这些指令的所有文件中.
如果我做同样的C#事情是行不通的:
//Config.cs
#define LINQ_ENABLED
//MyClass.cs
#define LINQ_ENABLED
using System;
using System.Collections.Generic;
#if LINQ_ENABLED
using System.Linq;
#endif
Run Code Online (Sandbox Code Playgroud)
我也试过以下但似乎我无法在命名空间内定义指令:
//Config.cs
namespace Conf{
#define LINQ_ENABLED
}
//MyClass.cs
#define LINQ_ENABLED
using System;
using System.Collections.Generic;
using Conf;
#if LINQ_ENABLED
using System.Linq;
#endif
Run Code Online (Sandbox Code Playgroud)
C#什么?我正在寻找Unity的一些基本示例/解释.我很难掌握这个概念.我对注入模式有基本的了解,因为Unity似乎与它紧密相关.我感谢任何帮助.
design-patterns dependency-injection inversion-of-control unity-container
可能重复:
主要的C#DI/IoC框架如何比较?
有那么多的DI容器,我觉得有点迷茫.我是DI模式的新手.
我正在阅读.NET中的Dependency Injection这本书,我发现DI在改进代码库方面非常有用,使它松散耦合并且更易于测试.
我现在想为我的虚拟项目引入一个DI容器,但是有很多可供选择.
我怎么选择Castle Windsor,Unity,StructureMap,Spring.NET,Autofac,Ninject,Funq,LinFu等等?
我想一个连贯的看法就是"选择一个"并开始使用它(因为我认为它们很容易互换,特别是在早期阶段),但我想做出更明智的决定.
我目前正在评估我们想要用于下一个项目的技术.它主要是自动数据操作的后端.它有一些依赖关系,我们现在只能在.Net 3.5上构建它.
Spring.net似乎很适合我们的要求,因为它在一个维护包中带来了DI容器,ADO.Net帮助器,NHibernate,单元测试助手和其他好东西.Spring.Net在社区中的确立程度如何?这似乎是积极维护,但谁使用它,可以分享一些经验?我,尤其是.对它拥有的DI容器和ADO.Net模块感兴趣.DI容器是否支持正确的自动接线?
.net frameworks dependency-injection spring.net inversion-of-control
关于这个问题的一个小背景故事:
我正在为我的本地酒吧写一个POS系统,我希望它能够启用插件.对于这个特殊问题,我将使用以下场景:
我有一个计算器类,顾名思义,它涉及当前收据,增值税等产品的所有计算.我希望这个类可以通过插件扩展(在不同的程序集中)来添加功能使用我们使用的这些特殊硬币.计算器只是遍历收据上的所有产品(在其构造函数中传递)来计算总金额.收据类具有其上的所有产品对象的列表.内置产品类没有任何与硬币相关的成员,这些成员位于插件程序集中的另一个产品类中.
这里的问题是,如何让我的主程序动态选择正确的类用于产品?
我正在考虑将所有插件加载到列表或字典中,并简单地遍历它们以检查是否存在产品类的覆盖,然后使用它,但我仍然需要某种通用接口,这不是一个选项.我确切知道如何在PHP中执行此操作,但是可以在运行/安装时使用更新的源编辑/替换源.
谢谢,Thom.
编辑:简化问题:是否可以让外部插件程序集使用新方法扩展内置程序集,而无需在现有应用程序中对方法的名称/委托/任何内容进行硬编码?
我知道之前有过类似的问题
我希望在.NET领域中获得IoC容器框架的当前状态.
关于这个主题的其他问题已经过时了.我正在准备关于这个主题的课程,所以我想提供最相关的信息.
目前.NET中IoC容器中最好的是什么?为什么?
什么是最受欢迎的?
.net containers dependency-injection ioc-container inversion-of-control
.net ×6
c# ×3
architecture ×1
asp.net-mvc ×1
autofac ×1
containers ×1
dynamic ×1
frameworks ×1
ninject ×1
spring.net ×1
structuremap ×1