Какая разница между OWINContext.Get() и его обобщенным методом?

При старте приложения в класе startup.cs я задаю контексты БД, юзерменеджеров и так далее.

Делается это так:
app.CreatePerOwinContext(ApplicationDbContext.Create);
        app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Create);


Я не понимаю почему для создания контекста БД используется Get, а для ApplicationUserManager обобщенный метод? В чем разница, ведь мы просто задаем колбек функцию.

И еще: я могу получить эти конексты в приложении так:
context.Get<ApplicationDbContext>())
context.GetUserManager<ApplicationUserManager>()


Почему для получения контекста БД используется Get а для юзерменеджера GetUserManager, и почему я не могу написать
context.get()?
  • Вопрос задан
  • 2958 просмотров
Пригласить эксперта
Ответы на вопрос 1
FirstX
@FirstX
.net developer
1. habrahabr.ru/post/227351 - пункт 3, создается кастомный менеджер и явно тип не указывается. Предполагаю, что и в твоем примере - если убрать скобки с типом менеджера, ничего криминального не случится.

2. Видимо потому, что во втором случае стоит более строгое ограничение по сигнатуре метода, чем у просто Get. А там возможно требуется использование и вызовы методов, которые определены в родительском для всех менеджеров классе UserManager. И соответственно в сигнатуре метода GetUserManager<T> стоит ограничение where <T> : UserManager.

Скажу честно, в исходниках я не смотрел как на самом деле, но уверен на 90%, что +/- это так
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы