У меня есть класс ClassA
public class ClassA : IRefreshable
{
}
, и он зарегистрирован в стартапе
services.AddSingleton<ClassA>();
Я также регистрирую свои услуги как одиночный
services.AddSingleton(services);
Я также создал контроллер с именем RefreshController, который получает коллекцию IServiceCollection в конструкторе.
public RefreshController(IServiceCollection sc)
{
}
Теперь в контроллере обновления я использую коллекцию служб для извлечения всех типов, которые зарегистрированы как синглеты, как реализующие IRefreshable, такпри вызове конечной точки обновления я перебираю их и использую поставщика услуг для получения экземпляра
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 экземпляра для одной и той же зарегистрированной службы.Есть идеи ??