在startup.cs中,我想定義一個擴展的ServiceProvider:它基本上包裝了默認的IServiceProvider實現。自定義IServicePovider不總是使用
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;
}
}
在啓動時,我可以看到的GetService被稱爲與「單身」生活時間(偉大的!)每個服務 然而,在此之後不再被調用,並且調用默認的ServiceProvider ... 順便說一句,如果我請求IServiceProvider的解析,這是我得到的本地解決方案。
我想我的serviceProvider完全取代原生的,並被稱爲每次。
我錯過了什麼?