Создание IWebHostEnvironment вручную asp. net core 3.1 - PullRequest
2 голосов
/ 27 марта 2020

В asp. net ядро ​​2.1. Я мог бы создать IHostingEnvironment следующим образом:

public IHostingEnvironment CreateHostingEnvironment()
{
    var hosting = new HostingEnvironment()
    {
       EnvironmentName = "IntegrationTests"
    };
    return hosting;
}

В Asp. net ядро ​​3.1 было изменено на IWebHostEnvironment, но я нужно создать его подобным образом. Может быть, цель состоит в том, чтобы создать этот объект и установить имя среды.

public IWebHostEnvironment CreateWebHostEnvironment()
{
    var host = new WebHostEnvironment(); // ???
}

1 Ответ

0 голосов
/ 27 марта 2020

Единственная встроенная реализация интерфейса IWebHostEnvironment является внутренней в ASP. NET Core 3.x:

internal class HostingEnvironment : IHostingEnvironment, Extensions.Hosting.IHostingEnvironment, IWebHostEnvironment
{
    public string EnvironmentName { get; set; } = Extensions.Hosting.Environments.Production;

    public string ApplicationName { get; set; }

    public string WebRootPath { get; set; }

    public IFileProvider WebRootFileProvider { get; set; }

    public string ContentRootPath { get; set; }

    public IFileProvider ContentRootFileProvider { get; set; }
}

Таким образом, если вам нужно по какой-либо причине создать экземпляр класса, который реализует интерфейс, вы можете просто скопировать приведенный выше код в свой проект и, возможно, изменить имя класса. Затем вы можете создавать его экземпляры в соответствии с вашими требованиями.

Каркас в любом случае зависит только от интерфейса.

...