Я вижу УСПЕШНЫЙ шаблон использовать ServiceProvder.GetService<ApplicationDbCotnext>()
для инициализации DbContext, Но когда вы внутри статического метода, я понятия не имею, как получить DbContext
, потому что есть нет ServiceProvider
. Есть ли способ получить ServiceProvider
?Как использовать DI внутри статического метода в Asp.net ядро rc1
ответ
Ну, во-первых, это не имеет никакого отношения к asp.net-core как таковой. Это больше связано с тем, как работает Dependency Injection. Вы должны спросить себя, почему ваш метод статичен. Это действительно необходимо?
Если вы не можете избавиться от своего статического метода, вы также можете пройти весь путь и ввести еще один анти-шаблон, Service Locator Pattern. Короче говоря: в классе Startup вы ставите ссылку на ServiceProvider в статическом свойстве (называете его «ServiceProviderSingleton») статического класса (например, «ServiceProviderProvider»). Таким образом вы можете просто вызвать «ServiceProviderProvider.ServiceProviderSingleton.GetService()».
Опять же, я предлагаю критически взглянуть на ваш чрезмерный дизайн. Но если это то, что вам нужно/нужно, я надеюсь, что это помогло.
I мы посмотрим на статические методы Microsoft (расширение) - они, похоже, не использовать протоколирование там - просто выбросить соответствующее исключение, например, в методе UseMvc (для класса StartUp):
- 1. Asp.net ядро DI с контекстом
- 2. Как использовать обычную переменную внутри статического метода
- 3. Как использовать «runOnUiThread (runnable)» внутри статического метода?
- 4. Как использовать отражение внутри статического метода
- 5. ASP.NET Ядро инициализирует одноплодное после настройки DI
- 6. HttpContext.Current.Response внутри статического метода
- 7. Вызов нестатического метода внутри статического веб-метода
- 8. Нестатические элементы внутри статического метода
- 9. Asp.Net Core RC1 -> изменения RTM DI - удалены FromServices
- 10. String.Remove equivilant внутри статического метода
- 11. Вызова grailsApplication внутри статического метода
- 12. Как использовать контекст внутри статического метода для запуска активности?
- 13. вызов статического метода внутри класса?
- 14. Angular2 RC1, как использовать NGC компилировать статического форум
- 15. Переменный обмен внутри статического метода
- 16. Получить имя нестатического метода внутри статического метода
- 17. ASP.NET Ядро 1,0 RC1 Docker с ДНУ опубликовать
- 18. Использование HttpContext.User ASP.NET MVC RC2 Ядро внутри класса обслуживания
- 19. ошибка идентификации, когда ASP.NET MVC RC2 Ядро обновления с RC1
- 20. Переменная экземпляра внутри статического метода? как?
- 21. Как написать cookie внутри статического метода
- 22. Как найти значение управления внутри статического метода
- 23. ASP.NET ядро, как Windows, служба Wwwroot расположения
- 24. Дисплей Тост внутри статического метода в Android
- 25. Как использовать invoke для статического метода?
- 26. Как использовать call_user_func для метода статического класса?
- 27. Asp.net Ядро
- 28. Как использовать статическую переменную из статического метода?
- 29. JsonSerializerSettings и Asp.Net Ядро
- 30. Как вернуть JFrame внутри статического метода с использованием метода 'get'
I найти способ доступа к поставщику услуг; 'var HttpContext = new Microsoft.AspNet.Http.Internal.HttpContextAccessor(). HttpContext; var ServiceProvider = HttpContext.ApplicationServices; 'Это правильный путь? – John
Он работает только на полном Clr. Спасибо – John
В случае выполнения многолетней фоновой задачи, которая должна иметь доступ к базе данных, кажется, что доступ к службам оправдан (либо из статического класса, либо из любого сценария, в котором вы работаете за пределами конвейера запроса). –