如何在服务或控制器中获取/注入 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
中进行本地化。没有要本地化的用户。
- 它应该在
AppService
和 Controller
内工作。
确保你:
- 在实际存在本地化上下文的地方注入。
- 等待
async
个方法。
我想知道如何在服务或控制器中获取 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
中进行本地化。没有要本地化的用户。 - 它应该在
AppService
和Controller
内工作。
确保你:
- 在实际存在本地化上下文的地方注入。
- 等待
async
个方法。