2015-12-08 3 views
1

Я пытаюсь определить, как получить functionalty этого тега помощника в любом файле класса:ASP.NET 5 (vNext) Environment Tag Helper От кодекса

<environment names="Development"> </environment> 

Я понимаю, что информационная среда доступна через a Объект IHostingEnvironment, но я не уверен, как его захватить без инъекции зависимости.

Можно ли получить DI-регистрационные сервисы из любого класса?

В этом конкретном случае я пишу несколько методов расширения HtmlHelper, но я думаю, что этот вопрос применяется в более широком смысле.

+0

Чтобы помочь вам лучше, почему вы хотите сделать это, не полагаясь на инъекцию зависимости? –

ответ

1

Таким образом, из внутри метода расширения IHtmlHelper, это работает:

IHostingEnvironment env = HtmlHelper.ViewContext.HttpContext.RequestServices.GetService(typeof(IHostingEnvironment)) as IHostingEnvironment; 

Есть ли более универсальный способ, чтобы захватить экземпляр службы, не полагаясь на инъекции зависимостей?

+1

Если вы распространяете HtmlHelper, это вполне допустимый способ сделать это. Просто будьте осторожны с тем, что вы используете. «RequestServices» имеют область действия для текущего запроса, а «ApplicationServices» - в течение всего срока действия приложения. :) –