如何在服务或控制器

时间:2017-09-29 12:34:18

标签: aspnetboilerplate

我想知道如何在服务或控制器中获取ILocalizationContext。例如,我想获得权限的DisplayName,但它需要“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();
            }
        }

修改

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

1 个答案:

答案 0 :(得分:2)

  

我在PostInitialize with Resolve中试过了

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

请确保:

  • 注入实际存在本地化背景的地方。
  • 等待async种方法。