3

Я правильно использую Core Core Asp.net в моей службе Stateless, поскольку в основном это обычное приложение WebApi с контроллерами.Service State State Service с инжектированием зависимостей ядра Asp.net

Я не могу понять, как использовать инъекции зависимостей в службах, поддерживающих состояние. Это конструктор по умолчанию для Stateful службы:

public MyService(StatefulServiceContext context): base(context) 
     {    
     } 

И называется в Program.cs по

ServiceRuntime.RegisterServiceAsync("MyStatefulType",context => new MyService(context)).GetAwaiter().GetResult(); 

Я хотел бы использовать что-то подобное в Stateful службы:

private readonly IHelpers _storageHelpers; 
     public MyService(IHelpers storageHelpers) 
     { 
      _storageHelpers = storageHelpers; 
     } 

Я уже зарегистрировал его в разделе Конфигурация службы состояния, но если я попытаюсь использовать код выше, у меня есть ошибка:

StatefulService не содержит конструктор, который принимает аргументы 0

Как заставить его работать?

ответ

2

Ошибка в конструкторе StatefulService, для этого требуется хотя бы параметр ServiceContext. Ваш код предоставляет только хранилище.

Это будет самый простой способ заставить его работать:

Услуги:

private readonly IHelpers _storageHelpers; 
public MyService(StatefulServiceContext context, IHelpers storageHelpers) 
      : base(context) 
{ 
      _storageHelpers = storageHelpers; 
} 

Программа:

ServiceRuntime.RegisterServiceAsync("MyStatefulType",context => new MyService(context, new StorageHelper())).GetAwaiter().GetResult(); 

В 'программе' вы можете также использовать IOC, чтобы получить экземпляр хелпера хранилища.

+0

Если бы у него была инъекция для IStorageHelper, как он мог бы получить экземпляр службы для использования вместо создания StorageHelper? – jKlaus

Смежные вопросы