В моем приложении есть блэйз-компонент:
public class IndexComponent : ComponentBase
{
public string ContentRoot { get; set; }
public string WebRoot { get; set; }
private IHostingEnvironment HostingEnvironment;
public IndexComponent(IHostingEnvironment hostingEnvironment)
{
HostingEnvironment = hostingEnvironment;
}
protected override async Task OnInitAsync()
{
//Some Code Here
}
}
Я пытаюсь использовать DI в своем приложении, например IHostingEnvironment.
Код не дает здесь ошибки времени компиляции, но когдая запускаю его, чем в коде файла этой бритвы (файл Index.razor.g.cs):
public class Index : IndexComponent
в этой строке написано:
Нет аргументовучитывая, что это соответствует необходимому формальному параметру hostingEnvironment IndexComponent.IndexComponent
Это можно решить с помощью @inject IHostingEnvironment в файле Razor, но я перемещаю свой функциональный блок из Razor в файл IndexComponent.cs, так что нужноэто там.
Ни один из этих способов не работает следующим образом:
[Inject]
IHostingEnvironment HostingEnvironment
Что здесь будет работать?
Примечание. Не использовать ViewModel
Обновление 1
В StartUp.cs путем добавления пространства имен
using Microsoft.AspNetCore.Hosting.Internal;
И чем
services.AddSingleton<IHostingEnvironment>(new HostingEnvironment());
Теперь он может зарегистрировать IHostingEnvironment на стороне клиентапроект, но он не имеет значения для его свойстваies (contentrootpath и webrootpath).
Здесь доступна только одна вещь - EnvironmentName и ее значение всегда равно Production,