我有一个ClassA类
public class ClassA : IRefreshable
{
}
它已在启动公司中注册
services.AddSingleton<ClassA>();
我也将我的服务注册为单身人士
services.AddSingleton(services);
我还创建了一个名为RefreshController的控制器,该控制器在构造函数中接收IServiceCollection。
public RefreshController(IServiceCollection sc)
{
}
现在在刷新控制器中,我正在使用服务集合来获取已注册为实现IRefreshable的单例的所有类型,因此在调用Refresh端点时,我将遍历它们并使用服务提供者来获取实例
this.typesToRefresh = sc.Where(s => s.Lifetime == ServiceLifetime.Singleton &&
s.ServiceType.FullName.ToLower().StartsWith("MyNamespace")
&& typeof(IRefreshable).IsAssignableFrom(s.ImplementationType)).ToList();
typesToRefresh.ForEach(t =>
{
IRefreshable rf = (IRefreshable)sProvider.GetService(t.ServiceType);
rf.Refresh();
});
我的问题是,同一注册服务获得2个实例。 有什么想法吗?
答案 0 :(得分:0)
好! 事实证明,每个服务提供商都是独立的。 我从代码中删除了所有.buildServiceProvider,并且正在从Httpcontext.RequestServices以及IApplicationBuilder.ApplicationServices的Startup.Configure方法中访问控制器中的框架sp。
感谢您的帮助。