我想知道如何在服务或控制器中获取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();
}
}
修改
问题来自我自己......你可以用控制器注入它,它应该可以工作。
答案 0 :(得分:2)
我在PostInitialize with Resolve中试过了
PostInitialize
中进行本地化。没有用户可以进行本地化。AppService
和Controller
内工作。请确保:
async
种方法。