c# - 什么框架使用 `IServiceProvider` ?

标签 c# inversion-of-control

IServiceProvider 基本上只是任何 IOC 容器的通用接口(interface),还是用于特定框架?我正在滚动我自己的轻量级 IOC 容器,我想知道我是否应该实现它。还有其他我应该实现的接口(interface)吗?我对 MEF 或 Unity 都不感兴趣。我已经广泛使用了两者,但它们并不真正适用于我当前的项目。

最佳答案

IServiceProvider 是一个导入的(或可能保留的)COM 接口(interface),旨在用于您查询服务的对象的上下文中的私有(private)功能。术语“服务”在这里的应用相当松散,它最初表示可以根据给定的 GUID 返回的任何 COM 对象。

IServiceProvider @ MSDN (.NET reference)
IServiceProviderImpl Class @ MSDN (C++ ATL reference)

在 .NET 中,您不需要实现它,除非您有专门支持它的客户端,并且在许多情况下,您不需要添加使用 IServiceProvider 隐含的另一个间接级别。此外,您还可以设计自己的方案来共享公共(public)对象或根据 IoC/依赖注入(inject)实现其他使用模式,这些模式根据您的需要更灵活或更严格。

IServiceProvider 的一个很好的历史背景是 IE 浏览器插件规范。在这里,它用于允许插件组件在上下文中使用浏览器主机功能。在 COM 上下文中,此接口(interface)很有用,因为它隐藏了实例化的细节,也可以用作对象构造和使用策略的一部分以避免引用循环。

WebBrowser Customization (Part 2) @ MSDN

关于c# - 什么框架使用 `IServiceProvider` ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14695238/

相关文章:

c# - 你能为一个类使用类似数组的构造函数吗

c# - 一个关于 LINQ to XML 的简单问题

c# - IoC 框架在 MVC 应用程序中的用途是什么?

inversion-of-control - 如何使用 autofac 进行自定义初始化

c# - 在安装依赖项时使用 IoC 容器是不好的做法还是代码味道?

c# - 将 System.Web.UI.WebControls.Image 转换为 System.Drawing.Image?

c# - 初始化许多静态实例怎么样?有没有人见过用法?

c# - 比较两个 xmlfiles,添加缺少的元素

java - Spring - Autowiring 字段为空

c# - IoC/DI面对winforms等生成代码