Я пытаюсь получить экземпляр службы IStringLocalizer
внутри метода расширения, возможно ли это? Любые предложения о том, как я должен его вводить?Injecting DI service по методу расширения
Моя цель здесь заключается в том, чтобы перевести тип, используя его название в качестве условного обозначения.
public static class I18nExtensions
{
private IStringLocalizer _localizer; // <<< How to inject it?
public static string GetName(this Type type)
{
return _localizer[type.Name].Value;
}
}
Есть некоторые уродливые трюки, которые могли бы работать https://github.com/aspnet/DependencyInjection/issues/294 –
Я бы сказал, что ваш метод расширения должен быть сервисом собственного ('ITypeNameLocalizer'), потому что он имеет зависимость. Резервные методы расширения * только * для простой логики, которая вряд ли изменится и никогда не будет иметь зависимости. – NightOwl888
+10 для @ NightOwl888. – Steven