c# - 如何在 MEF 和任何 IoC 容器之间做出选择?

标签 c# .net wpf ioc-container mef

我们应该在什么场景下使用哪一个?如何决定选择哪一个?在什么情况下我们会选择两者一起使用?

我之前使用过 Unity Container ()。

最佳答案

棘手的问题 - 因为两者确实在一定程度上重叠。

我会这样说:

  • 如果您主要关注依赖注入(inject)是为了解耦您的组件,请使用任何有用的 IoC,例如为了能够注入(inject)模拟而不是(用于测试)

  • 使用 MEF,尤其是当您更喜欢可扩展性时,例如能够“从该目录加载导出特定接口(interface)的所有程序集”,并且如果您需要可扩展并为第三方开放(如 Visual Studio:提供公共(public) API,以便其他人可以为您的应用程序编写扩展)。这就是 MEF 真正闪耀的地方

对于 MEF 和 Unity,还有 MEF and Unity Integration Layer将这两种工具的优势结合在一起。

我还建议您查看 Ayende 的 excellent blog post MEF 与 IoC 的区别。

关于c# - 如何在 MEF 和任何 IoC 容器之间做出选择?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4342662/

相关文章:

.net - 使用 SignedXml.ComputeSignature 将签名添加到配置文件后为 "Unrecognized configuration section"

c# - 获取 wpf 组合框选择的值

c# - 按句点将字符串格式化为 3 位数字组

c# - 从 DataContext 获取值到 MarkupExtension

c# - SpecFlow BeforeScenario 针对每个功能文件运行

c# - 尝试从 CRM 2011 Web 服务接收信息时出错

c# - 从字符串数组中删除所有空元素

c# - 为 WPF 标题添加事件处理程序

.net - 触发器集合成员的类型必须为EventTrigger

c# - 如何将字符串序列化为 JSON 并按其中一个值进行分组?