ДиатомовыйДействие входа не выполняется после добавления интерфейса в конструктор AuthController - PullRequest
0 голосов
/ 25 февраля 2019

ASP Core + угловое приложение.Контейнер ASP DI по умолчанию.Я пытаюсь реализовать DI с Scrutor в ConfigureServices:

services.Scan(scan => scan.FromCallingAssembly().AddClasses().UsingRegistrationStrategy(RegistrationStrategy.Skip).AsSelf().WithTransientLifetime()); 
bool isThereClass11 = services.Any(x => x.ServiceType == typeof(Class11));

Кажется, работает: isThereClass11 возвращает true.

Далее я пытаюсь внедрить IClass11 в конструктор: public AuthController(IClass11 cl){}

В результате действие входа в систему не выполняется, и я получил "zone.js: 2969 POST https://localhost:44362/api/auth/login 500" на веб-интерфейсе.

public class Class11: IClass11 {}
public interface IClass11 {}

Если конструктор AuthController не имеет аргументов, действие входа в систему получает удар и работает, как и ожидалось.Как я могу ввести зависимость в мой AuthController, предпочтительно используя Scrutor (я не хочу добавлять зависимости вручную в ConfigureServices или использовать другой DI, если он мне действительно не нужен)?

1 Ответ

0 голосов
/ 25 февраля 2019

Ваш services знает только тип Class11, но ничего не знает об интерфейсе IClass11.Это потому, что вы зарегистрировали его с помощью метода AsSelf().

Затем, когда ваш конструктор контроллера ожидает реализацию IClass11, он не может быть удовлетворен.

Если вы зарегистрируете свои зависимости с помощью метода AsSelfWithInterfaces(), он должен работать.

См. Источник

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