如何在服务或控制器中获取/注入 ILocalizationContext

How to get / inject ILocalizationContext inside service or controller

我想知道如何在服务或控制器中获取 ILocalizationContext。例如,我想获取权限的显示名称,但它需要 "ILocalizationContext": DisplayName.Localize(ILocalizationContext)。 我试过注射,没用...

我尝试了多种方式来注入它,构造函数,使用...我可以在里面看到类似的东西 "PermissionCheckerExtensions" :

var iocManager = (permissionChecker as IIocManagerAccessor).IocManager;
        using (var localizationContext = iocManager.ResolveAsDisposable<ILocalizationContext>())
        {
            using (var permissionManager = iocManager.ResolveAsDisposable<IPermissionManager>())
            {
                return permissionNames.Select(permissionName =>
                {
                    var permission = permissionManager.Object.GetPermissionOrNull(permissionName);
                    return permission?.DisplayName == null
                        ? permissionName
                        : permission.DisplayName.Localize(localizationContext.Object);
                }).ToArray();
            }
        }

编辑:

问题出在我自己身上......你可以用控制器注入它,它应该可以工作。

I've tried inside PostInitialize with Resolve

  • 您不应在 PostInitialize 中进行本地化。没有要本地化的用户。
  • 它应该在 AppServiceController 内工作。

确保你:

  • 在实际存在本地化上下文的地方注入。
  • 等待 async 个方法。