ИспользованиеimplementFactory со связанными сервисами во внедрении зависимостейC#

Место общения программистов C#
Anonymous
ИспользованиеimplementFactory со связанными сервисами во внедрении зависимостей

Сообщение Anonymous »

Я прочитал документацию по внедрению зависимостей, но не могу найти правильный подход к использованиюimplementationFactory, когда делегат должен разрешить связанные службы из DI-контейнера для настройки другой службы. (все службы реализуют IDisposable)

Код: Выделить всё

IHost hostBuilder = Host.CreateDefaultBuilder()
.ConfigureServices(
(context, services) =>
{
services.AddTransient();
services.AddScoped();
services.AddSingleton();
})
.ConfigureServices(
(context, services) =>
{
services.AddTransient(
sp =>
{
var transient = sp.GetRequiredService();
var scoped = sp.GetRequiredService();
var singleton = sp.GetRequiredService();

return new ServiceLifetimeReporter(transient, scoped, singleton);
});
})
.Build();
(Я понимаю, что этот пример будет работать и безimplementFactory)
Я не могу понять, как правильно написатьimplementationFactory
code> во втором методе ConfigurationServices.
  • Создает ли DI локальную область для реализации?
    Должен ли я вручную создавать локальную область видимости вimplementationFactory (с помощью CreateScope)?
  • Действует ли DI< /code> берет на себя ответственность за утилизацию (

    Код: Выделить всё

    Dispose()
    ) объекты до того, как они были созданы?
  • Каким будет правильный подход в этой (и подобной) ситуации?
Я экспериментировал с разными подходами:
  • Используйте пример выше (

    Код: Выделить всё

    Dispose()
    не был вызван)
  • Создать локальную область (

    Код: Выделить всё

    Dispose()
    вызывается для времен жизни Transient и Scoped)
  • Используйте using для вызова методов Dispose() (

    Код: Выделить всё

    Dispose()
    вызывается на протяжении всего времени существования)


Подробнее здесь: https://stackoverflow.com/questions/786 ... -injection

Вернуться в «C#»