我们应该在什么场景下使用哪一个?如何决定选择哪一个?在什么情况下我们会选择两者一起使用?
我之前使用过 Unity Container (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/