通过扩展方法注入DI服务 [英] Injecting DI service on a extension method

查看:68
本文介绍了通过扩展方法注入DI服务的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试在扩展方法中获取IStringLocalizer服务实例,这可能吗?关于应该如何注射的任何建议?

I'm trying to get the IStringLocalizer service instance inside a extension method, is it possible? Any suggestions on how should I inject it?

我的目标是使用名称作为约定来翻译类型.

My goal here is to translate a type using its name as convention.

public static class I18nExtensions
{

    private IStringLocalizer _localizer; // <<< How to inject it?

    public static string GetName(this Type type)
    {
        return _localizer[type.Name].Value;
    }
}

推荐答案

遵循

Following @NightOwl888 comment I was in the wrong path, I ended up creating the following service:

public class TypeNameLocalizer : ITypeNameLocalizer
{
    private IStringLocalizer localizer;

    public TypeNameLocalizer(IStringLocalizer<Entities> localizer) 
    {
        this.localizer = localizer;
    }
    public string this[Type type] 
    { 
        get
        {
            return localizer[type.Name];
        }
    }
}

信用:@ NightOwl888

Credit: @NightOwl888

这篇关于通过扩展方法注入DI服务的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆