.NET Core добавляет / регистрирует класс как себя в коллекции сервисов - PullRequest
0 голосов
/ 04 июня 2018

Я пытаюсь добавить класс как self в контейнер.

Однако, поскольку класс ожидает некоторые зависимости в конструкторе, он жалуется на синтаксическую ошибку.

services.TryAddSingleton<TimeoutPolicyHolder>(new TimeoutPolicyHolder());

Как я могу добавить этот класс как себя?

То же самое в AutoFac будет:

builder.RegisterType<FooService>().AsSelf();

Как мне обойти эту проблему?

1 Ответ

0 голосов
/ 04 июня 2018

Саму службу можно добавить в набор служб с помощью общего расширения.

services.AddSingleton<TimeoutPolicyHolder>();

Или одной из доступных перегрузок.

Контейнер позаботится об инициализации службы иВнедрение любых зависимостей.

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

services.TryAddSingleton<TimeoutPolicyHolder>(sp => 
    new TimeoutPolicyHolder(sp.GetService<Dependency1>(),...)
);

Он будет иметь доступ к поставщику услуг при вызове, так что любые зависимости, которые необходиморешаться можно.

...