【发布时间】:2017-02-14 20:50:28
【问题描述】:
我正在尝试在扩展方法中获取 IStringLocalizer 服务实例,这可能吗?关于如何注入它的任何建议?
我的目标是使用它的名称作为约定来翻译一个类型。
public static class I18nExtensions
{
private IStringLocalizer _localizer; // <<< How to inject it?
public static string GetName(this Type type)
{
return _localizer[type.Name].Value;
}
}
【问题讨论】:
-
有一些丑陋的技巧可以奏效github.com/aspnet/DependencyInjection/issues/294
-
我认为您的扩展方法应该是它自己的服务 (
ITypeNameLocalizer),因为它具有依赖关系。保留扩展方法仅用于不太可能更改且永远不会有依赖关系的简单逻辑。 -
@NightOwl888 +10。
-
请注意,如果您想在 HTML 帮助程序中使用 DI,您可以在 this answer 中执行类似操作。
标签: c# dependency-injection asp.net-core extension-methods