#c# #asp.net-core
#c# #asp.net-ядро
Вопрос:
Я не могу использовать внедрение зависимостей, у меня есть статический вспомогательный класс со статическими методами в моем ASP.NET Основной проект. Какой самый простой способ определить, что приложение запущено в среде разработки?
Эквивалент:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment()) // -> this env is what I'm looking for
{
app.UseDeveloperExceptionPage();
app.UseMigrationsEndPoint();
}
...
}
Как я могу получить env
вручную без DI?
Комментарии:
1. Почему они определены как статические методы? Почему бы вам не сделать их нестатическими и не создать их класс с использованием контейнера IoC?
2. По причинам, выходящим за рамки этого вопроса. Это большой проект, они просто являются статическими методами в вспомогательном классе. Такова реальность.
3. Есть ли причина, по которой вы не можете создать нестатический класс для этого?
Ответ №1:
Учитывая, что запуск — это самое первое, что выполняется на ASP.NET Основное приложение (после того, как хост встроен в основной программный класс), доступны очень простые решения:
public class Startup
{
public static IWebHostEnvironment Environment { get; }
public Startup(IWebHostEnvironment environment)
{
Environment = environment;
}
}
Обратите внимание, что правильное решение, однако, не смешивать внедрение зависимостей со статическими классами.