Есть ли способ использовать IHostingEnvironment в библиотеке основных классов .net?

В моем приложении я сохраняю некоторые файлы изображений в самой папке приложения. В настоящее время используется интерфейс IHostingEnvironment для получения пути. нравиться

private readonly IHostingEnvironment _hostingEnvironment;
        /// <summary>
        /// Initializes a new instance of the <see cref="ProductController"/> class.
        /// </summary>
        /// <param name="unitService">The product service.</param>
        public ProductController(IProductService productService, IHostingEnvironment hostingEnvironment)
        {
            this._productService = productService;
            this._hostingEnvironment = hostingEnvironment;
        }

для получения пути с помощью этого кода _hostingEnvironment.ContentRootPath

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

public static class AssetPathHandlerExtensions
    {
        private readonly IHostingEnvironment _hostingEnvironment;//error

        public static string AppendAssetPath(this string fileName, string subDirectryPath)
        {
           //here i need to get the ContentRootPath and append it with filename
        }
    }

Этот метод расширения находится в библиотеке классов, и я вызываю этот метод расширения из automapper Mapping.

Проблема, с которой я столкнулся, заключается в том, что я не могу использовать IHostingEnvironment в библиотеке классов, поскольку она не содержит сборки Microsoft.AspNetCore.Hosting.Abstractions.dll.

Есть ли способ использовать IHostingEnvironment в библиотеке классов?


person Arunprasanth K V    schedule 10.01.2019    source источник


Ответы (1)


Нет проблем с использованием IHostingEnvironment в вашей библиотеке классов. Просто установите его пакет NuGet с помощью этой команды в своей библиотеке классов:

Install-Package Microsoft.AspNetCore.Hosting

И разрешите IHostingEnviroment из контейнера DI следующим образом:

public class SomeClass
{
    private IHostingEnvironment _hostingEnvironment;

    public SomeClass(IHostingEnvironment hostingEnvironment)
    {
        _hostingEnvironment = hostingEnvironment;
    }

    public void SomeMethod()
    {
        // Use IHostingEnvironment with _hostingEnvironment here.
    }
}
person Moien Tajik    schedule 10.01.2019
comment
Спасибо за ввод, но как я могу сослаться на Microsoft.AspNetCore.Hosting, я не смог найти его в окне добавления ссылки - person Arunprasanth K V; 10.01.2019
comment
@ArunprasanthKV Добро пожаловать, просто установите его через NuGet: Microsoft.AspNetCore.Hosting - person Moien Tajik; 10.01.2019
comment
Ссылка больше не работает. Вот почему Stack Overflow хочет, чтобы вы помещали в ответы образцы кода, а не просто ссылку. - person Kurt; 09.05.2019
comment
Вы правы, ответьте обновленным образцом кода. @Kurt - person Moien Tajik; 09.05.2019