- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
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)很有用,因为它隐藏了实例化的细节,也可以用作对象构造和使用策略的一部分以避免引用循环。
关于c# - 什么框架使用 `IServiceProvider` ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14695238/
我很难理解为什么在使用 IApplicationBuilder.ApplicationServices 时,在启动配置方法中应用服务定位器模式的行为会有所不同。而不是IServiceProvider
我正在使用 .Net Core,目前我正在使用它的 DI 引擎。 我的项目是一个类库,因此,asp的绑定(bind)在这里无关紧要。 我遵循了 this article 中的提示为了使 DI 工作。
TLDR:是否可以在 Startup 运行后修改 IServiceProvider? 我在运行时运行 dll(它实现了我的接口(interface))。因此有一个文件监听器后台作业,它会等到 plug
我是在探索 XNA 框架时提出这个问题的,但我希望有一个大致的了解。 ISomeService someService = (ISomeService)Game.GetServices(typeof(
IServiceProvider 基本上只是任何 IOC 容器的通用接口(interface),还是用于特定框架?我正在滚动我自己的轻量级 IOC 容器,我想知道我是否应该实现它。还有其他我应该实现的
我试图调试应用程序中的内存泄漏(请参阅相关的 question ),并且遇到了错误的行为。 在此代码中(当然是简化的代码片段): while (true) { usin
我正在尝试为 IServiceProvider 创建一个 Mock(使用 Moq),以便我可以测试我的存储库类: public class ApiResourceRepository : IApiRe
我正在使用 IHostBuilder在 .NET Core 2.1 控制台应用程序中。主要看起来像这样: public static async Task Main(string[] args
我正在编写一些设计时代码。我想使用这个片段:(找到 here) var dte = (EnvDTE.DTE) GetService(typeof(EnvDTE.DTE)); if (dte != nu
我想知道为什么不显式使用 IServiceProvider 来解决依赖关系,而不是单独注入(inject)每个依赖关系。换句话说,为什么要使用这种方法: public class A { pr
我需要在开源MFC应用程序中实现IServiceProvider接口(interface);特别是我的 TTSApp申请。 我正在尝试添加对 IAccessibleApplication interf
这是关于 .NET 的一般性问题 我得到了一个 IServiceProvider 的实例接口(interface),但我几乎没有关于从中可以得到什么的文档。我如何找到它可能提供的所有服务的列表? 最佳
我在查看我的一些旧代码时发现了一个混合的 IValueConverter/MarkupExtension 类。这让我想知道 ProvideValue 方法中的 IServiceProvider 是否真
我希望能够访问内置的 IoC 容器(IServiceProvider 我相信)。 我知道在代码中访问它通常是不好的做法,我们应该允许框架将所需的任何依赖项注入(inject)到 Controller
我需要使用 IServiceProvider 在 ASP.NET Core 1.0 的 ConfigureService 方法中访问 session 变量。 我有一个使用委托(delegate)/la
我正在研究 xamarin 表单上的“依赖注入(inject)”,并发现了一些使用类似 ContainerBuilder 的概念。 .网上找到的解决方案如this ,讨论如何进行 DI 设置并将它们注
我们可以访问 IServiceProvider作为: public class ProductService { private readonly IProductRepository _pr
我们可以访问 IServiceProvider作为: public class ProductService { private readonly IProductRepository _pr
如果您编写自己的 MarkupExtension,您可能会偶然发现 IServiceProvider serviceProvider 参数在设计时与运行时不同。例如,您无法获取 IRootObject
我正在实现一个新的 .NET Core 项目并为我的服务层进行依赖注入(inject)。我创建了一个实现 IServiceProvider 的接口(interface),现在必须实现 GetServi
我是一名优秀的程序员,十分优秀!