Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dependency injection 并不总是使用自定义iServiceVider_Dependency Injection_Asp.net Core_.net Core - Fatal编程技术网

Dependency injection 并不总是使用自定义iServiceVider

Dependency injection 并不总是使用自定义iServiceVider,dependency-injection,asp.net-core,.net-core,Dependency Injection,Asp.net Core,.net Core,在startup.cs中,我想定义一个扩展的ServiceProvider:它基本上包装了默认的IServiceProvider实现 public IServiceProvider ConfigureServices(IServiceCollection services) { [...] var servicesProvider = services.BuildExtendedServiceProvider(); return servicesProvider; } 下面是

在startup.cs中,我想定义一个扩展的ServiceProvider:它基本上包装了默认的IServiceProvider实现

public IServiceProvider ConfigureServices(IServiceCollection services)
{
   [...]
   var servicesProvider = services.BuildExtendedServiceProvider();
   return servicesProvider;
}
下面是核心的扩展服务提供者实现

/// <summary>
/// Extends the native asp.net service provider 
/// </summary>
public class ExtendedServicesProvider : IServiceProvider
{
    private readonly IServiceProvider _serviceProvider;

    /// <summary>
    /// Creates a new instance of <see cref="ExtendedServicesProvider"/> provider based on the native mvc <see cref="IServiceProvider"/>
    /// </summary>
    /// <param name="serviceProvider"></param>
    public ExtendedServicesProvider(IServiceProvider serviceProvider)
    {
        _serviceProvider = serviceProvider;
    }

    /// <inheritDoc />
    public object GetService(Type serviceType)
    {
        var resolvedService = _serviceProvider.GetService(serviceType);
        [...]
        return resolvedService;
    }
}
//
///扩展本机asp.net服务提供程序
/// 
公共类扩展服务提供程序:IServiceProvider
{
私有只读服务器ViceProvider\u服务提供商;
/// 
///基于本机mvc创建提供程序的新实例
/// 
/// 
公共扩展服务提供者(IServiceProvider服务提供者)
{
_服务提供者=服务提供者;
}
/// 
公共对象GetService(类型serviceType)
{
var resolvedService=\u serviceProvider.GetService(serviceType);
[...]
返回解析服务;
}
}
在启动时,我可以看到对每个具有“单例”生命周期的服务调用GetService(太棒了!!) 但是,此后不再调用它,而是调用默认的ServiceProvider。。。 顺便说一下,如果我请求IServiceProvider的解析,这是我得到的本地解析

我希望我的服务提供商完全替换本地服务提供商,并且每次都会被调用


我遗漏了什么吗?

好的,我只是检查了源代码(我应该在发布问题之前检查一下,对不起)。

构建方法本身将IServiceProvider类型添加到本机实例中。 因为似乎没有办法正确地修改它(不考虑“_table”字段,我的意思是:-)。在我看来,这种方法显然不好

我想我会尝试其他依赖注入引擎,比如Autofac,但我真的想保留我认为非常轻的本机引擎