Я вижу, это имеет смысл.

из замечательных особенностей ядра .net в том, что оно очень модульное и настраиваемое.

Ключевым аспектом этой гибкости является то, что он использует IoC для регистрации услуг, часто через интерфейсы. Теоретически это позволяет заменить сервис .net по умолчанию на пользовательскую реализацию этого сервиса без особых усилий.

Все это звучит круто в теории. Но у меня есть реальный рабочий случай, когда я хочу заменить базовую службу .net по умолчанию своей собственной, и я не могу понять, как удалить службу по умолчанию.

Более конкретно, в Startup.csConfigureServices метод, когдаservices.AddSession() называется это регистрируетDistributedSessionStore Вай следующий код:

 services.AddTransient<ISessionStore, DistributedSessionStore>();

как видно из исходного кода:https://github.com/aspnet/Session/blob/rel/1.1.0/src/Microsoft.AspNetCore.Session/SessionServiceCollectionExtensions.cs

Я хотел бы заменить этот ISessionStore одним из моих собственных созданий. Так что, если у меня есть классRonsSessionStore:ISessionStore что я хочу использовать для замены текущего зарегистрированного ISessionStore, как я могу это сделать?

Я знаю, что могу зарегистрировать свой ISessionStore в Startup.csConfigureServices метод с помощью следующего:

 services.AddTransient<ISessionStore, RonsSessionStore>();

Но как я могу удалить уже зарегистрированныйDistributedSessionStore?

Я попытался сделать это в startup.csConfigureServices метод через

 services.Remove(ServiceDescriptor.Transient<ISessionStore, DistributedSessionStore>());

но это не имело никакого эффекта, и DistributedSessionStore все еще находился в контейнере IoC. Есть идеи?

Как удалить службу из IoC вConfigureServices метод запуска .cs?

Ответы на вопрос(2)

Ваш ответ на вопрос