Не используйте класс c. Вы можете сохранить что-то похожее на ваш класс и зарегистрировать его как синглтон.
public class Common
{
private readonly IWebHostEnvironment _env;
public Common(IWebHostEnvironment env)
{
_env = env;
}
private void DeleteTestFiles()
{
var path = Path.Combine(_env.ContentRootPath, "App_Data/Files");
.....
}
}
Затем в Startup.ConfigureServices
:
services.AddSingleton<Common>();
Наконец, введите Common
, где вам нужно это, вместо того, чтобы просто статически ссылаться на класс. Вот как все работает в DI, статика не - go.
ОБНОВЛЕНИЕ:
Чтобы это работало, потому что проект Utility ссылается на Microsoft.NETCore.App
, а не Microsoft.AspNetCore.App
Framework, тогда вы должны использовать IHostEnvironment
вместо IWebHostEnvironment
.
IWebHostEnvironment
фактически реализует IHostEnvironment
интерфейс.
Сделал тест и все работает хорошо! Я мог бы получить ContentRootPath
.
public class Common
{
private readonly IHostEnvironment _env;
public Common(IHostEnvironment env)
{
_env = env;
}
private void DeleteTestFiles()
{
var path = Path.Combine(_env.ContentRootPath, "App_Data/Files");
.....
}
}