如何选择DI容器? [复制]

2024-01-03

可能的重复:
主要 C# DI/IoC 框架如何比较? https://stackoverflow.com/questions/4581791/how-do-the-major-c-sharp-di-ioc-frameworks-compare

有这么多 DI 容器,我感觉有点迷失。我是 DI 模式的新手。

我正在看书.NET 中的依赖注入 http://www.manning.com/seemann/我发现 DI 在改进代码库、使其松散耦合和更易于测试方面非常有用。

我现在想为我的虚拟项目引入一个 DI 容器,但可供选择的容器太多了。

我应该如何在 Castle Windsor、Unity、StructureMap、Spring.NET、Autofac、Ninject、Funq、LinFu 等之间进行选择?

我想一个连贯的做法是“只选择一个”并开始使用它(因为我认为它们很容易互换,特别是在早期阶段),但我想做出更明智的决定。


这就像买一辆车一样。您可能喜欢丰田,但它只是 2.5 升发动机。你可能喜欢法拉利,但它太红了。您可能喜欢马自达,但您的老板不允许您驾驶它。你可能喜欢悍马,但你的同事会嘲笑你。根据您的口味混合制造商,总会有人或在某个不同的时刻缺少一些东西。

我的看法是 - 首先也是最重要的,DI 通常比没有 DI 更好。选择任何东西,你都会过得更好。我会选择这样的东西:

  • 在社区中拥有良好的支持(因此您可以获得答案)
  • 背后有一个很好的支持公司(所以当代码破产时你不必重写你的代码)
  • 对你感觉很好(所以你不会在孩子们面前说脏话,不酷)
  • 对于该项目来说并不过分
  • 不仅仅是 DI,还提供了一个生态系统,可以减少您在知道自己可以完成的任务上花费的时间,但不是现在,然后您就可以专注于重要的事情
  • 被很多人使用(所以你知道很多部分也在现实生活中进行了测试并且填充了错误)
  • 不是 5 年前(比如文档说它在 Windows 98 或其他操作系统上受支持)

我的 2 美分 -http://www.springframework.net/ http://www.springframework.net/。我的意思是,他们的文档内容页面 http://www.springframework.net/doc-latest/reference/html/index.html好像有20页那么长...

或者您可能只是想查看类似问题的更多答案:

  • 哪些 .NET 依赖注入框架值得研究? https://stackoverflow.com/questions/21288/which-net-dependency-injection-frameworks-are-worth-looking-into
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何选择DI容器? [复制] 的相关文章

随机推荐

  • python 2.7中对数对数尺度的最佳拟合线

    这是以对数刻度表示的网络 IP 频率排名图 完成这部分后 我尝试使用以下方法在对数刻度上绘制最佳拟合线Python 2 7 我必须使用 matplotlib 的 symlog 轴刻度 否则某些值无法正确显示 并且某些值会被隐藏 我正在绘制的
  • 将自定义对象从 C# 传递到 Powershell

    我有一个 C 类 应该通过向其传递 Log 对象来执行 Powershell 脚本 日志完全用 C 编写 应该在 C 代码和 Powershell 之间共享 以实现通用日志记录 有人可以告诉我如何将自定义对象从 C 传递到 Powershe
  • iOS4 MPMoviePlayerController 嵌入

    我当前正在使用 MPMoviePlayerController 在 iPhone 内播放视频 现在我希望在视图的一小部分区域 而不是全屏 播放该视频 我认为有一个框架方法可以做到这一点 但我在某处找不到所需的教程 你有遇到过吗 那太好了 U
  • 在 Slack 中创建并获取新通道传入 Webhook

    我刚刚使用channels create 方法通过Slack Api 创建了一个通道 如何添加传入的 Webhook 并以编程方式获取 URL 我还有其他工具可以进一步使用它 您无法以编程方式创建新的传入 Webhook 但您也不必这样做
  • gcc 中模板的非延迟静态成员初始化?

    gcc 对静态成员初始化时序有任何保证 特别是对于模板类吗 我想知道我是否可以获得静态成员的硬保证 PWrap T
  • 如何在 .NET 中使用 Saxon-HE 9.8 使用 XSLT 3.0

    我使用的是 Win7 并将 VSCODE 项目设置为 NET Framework 4 然后下载 SaxonHE9 8 0 7N setup exe 并安装 然后将 saxon9he api dll 引用到 C 项目并using Saxon
  • 为什么扩展切片不会反转列表?

    我正在 python 中切片列表 无法解释一些结果 以下两项对我来说似乎很自然 gt gt gt 0 1 2 3 4 5 1 4 1 1 2 3 gt gt gt 0 1 2 3 4 5 1 5 4 3 2 1 0 然而 gt gt gt
  • 数学解释为什么 Decimal 到 Double 的转换被破坏以及 Decimal.GetHashCode 分隔相等的实例

    我不确定这种表述 Stack Overflow 问题的非标准方式是好是坏 但这里是 代码的最佳 数学或其他技术 解释是什么 static void Main decimal arr 42m 42 0m 42 00m 42 000m 42 0
  • git svn status - 显示未提交到 svn 的更改

    我正在 git svn 中寻找一个命令 该命令将显示我已提交到 git 存储库但尚未提交到中央 svn 存储库的更改 我正在寻找像 svn status 一样工作的东西 但我正在使用 git svn 不幸的是 git svn status不
  • 如何使用 FastAPI 获取 Jinja2 模板中更新的项目列表?

    我正在我的博客上构建一个评论系统 并且我正在呈现这样的现有评论 for comment in comments div class pt 4 div class bg white rounded lg p 3 flex flex col j
  • LARAVEL - 显示存储文件夹中的图像

    我是 Laravel 新手 想知道是否有人可以帮助我完成简单的图像上传 我有一个表单 允许用户创建个人资料并在此过程中上传其个人资料和头像 这一切都很完美 这是我的控制器的代码 if request gt hasFile avatar fi
  • 与任何内容都不匹配的 Glob 会扩展到自身,而不是什么都没有

    我想迭代特殊类型文件夹中的文件 例如 test 所以我写了一些脚本名称for loop for f in test do echo This is f f done After chmod x for loop 我可以开始它 for loo
  • 重新索引不填充 NaN

    我有一个系列 index pd MultiIndex from tuples bar one bar two baz one baz two foo one foo two qux one qux two names first secon
  • 如何使用 DDay.iCal 在 iCal Feed 中设置时区?

    我正在使用创建 iCal feedDDay iCal http www ddaysoftware com Pages Projects DDay iCal 它有效 但我不知道如何设置提要的时区 这是基本代码 iCalendar iCal n
  • FMDB 和加密

    我正在使用 FMDB 来处理 sqlite 并且我希望避免对 SQLCipher 的依赖 如何简单地利用 iOS 内置的 DataProtection 功能 这可能吗 唯一的要求是在手机被盗时保护数据 如果手机使用 PIN 码解锁 则用户可
  • HTML5 画布:调整图像大小

    我正在尝试将图像放置在画布上而不调整其大小 我认为 drawImage img x y 可以解决问题 但它会拉伸图像以填充画布 另外 向 drawImage img x y width height 提供图像的尺寸似乎不起作用 这是我的代码
  • 如何从Openfire获取群聊的离线消息

    有什么办法可以进入xmpp我得到的离线消息MultiUserChat 当我的用户登录并加入房间时 我想要实现群聊 like WhatsApp 还有其他方法可以实现这个请建议 提前致谢 至少在ejjaberd当您进入聊天组时 您必须输入您的最
  • 使用 Jsoup 和适当的 cookie 登录 Facebook

    我目前正在尝试自动废弃我自己的主页以及我登录 Facebook 时可以访问的其他可能页面 但是 在使用下面的代码并设置 cookie 后 我似乎无法 登录 Connection Response res Jsoup connect http
  • 为什么在链表中间插入是O(1)?

    根据维基百科关于链接列表的文章 http en wikipedia org wiki Linked list Linked lists vs arrays 在链表中间插入被认为是 O 1 我认为这将是 O n 您是否不需要找到可能靠近列表末
  • 如何选择DI容器? [复制]

    这个问题在这里已经有答案了 可能的重复 主要 C DI IoC 框架如何比较 https stackoverflow com questions 4581791 how do the major c sharp di ioc framewo