Как организовать отсроченное разрешение услуги по объему? - PullRequest
0 голосов
/ 12 февраля 2020

У меня есть одноэлементный объект, который создается при запуске приложения. Объект имеет зависимость от вспомогательного сервиса, который должен быть создан позднее для каждой области, после того, как ключ области уже известен. Как зарегистрировать такие зависимости?

testContainer.Register<DelayedServiceConsumer>(Lifestyle.Singleton);
testContainer.Register<Func<IDelayedService>>(() => new DelayedService(), Lifestyle.Scoped);


public class DelayedServiceConsumer() {
   public DelayedServiceConsumer(Func<IDelayedService> delayedServiceFactory) {....} 

   public void SomeMethod() {
      // I need per scope resolution happening here. If we already have service for that scope container should just return that instance. Otherwise new instance should be created for the scope
      var service = delayedServiceFactory(); 
   }
}

1 Ответ

0 голосов
/ 14 февраля 2020

Измените свою регистрацию на:

testContainer.RegisterInstance<Func<IDelayedService>>(() => new DelayedService());

Для получения дополнительной информации см. Документацию: https://simpleinjector.readthedocs.io/en/latest/howto.html#register -factory-Delegates

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...