今天在使用ABP多语言时代码如下
public class VendorAppService : ApplicationService, IVendorAppService
{
private readonly VendorManager _vendorManager;
private readonly VendorStore _vendorStore;
private readonly VendorItemStore _vendorItemStore;
private IAbpSession _abpSession;
public VendorAppService(VendorManager vendorManager,
VendorStore vendorStore,
VendorItemStore vendorItemStore,
IAbpSession abpSession)
{
_vendorManager = vendorManager;
_vendorItemStore = vendorItemStore;
_vendorStore = vendorStore;
_abpSession = abpSession;
}
...省略
/// <summary>
/// 判断确认密码和密码是否一样
/// </summary>
/// <param name="password"></param>
/// <param name="confirmPassword"></param>
private void CheckPassword(string password,string confirmPassword)
{
//验证确认密码和密码是否一样
if (password != confirmPassword)
{
throw new UserFriendlyException(L("Exception.Create.User.PasswordConfirmError"));
}
}
}
因为在抛友好异常的时候使用到了多语言L方法报错,报错的意思就是没有设置本地资源文件名称,找了半天其他博客有点啰嗦,这里要特别感谢https://stackoverflow.com/questions/44938750/set-localizationsourcename-in-domain-service给的重要提示,他这边给的要继承DomainService,后来自己试了一下只要在构造方法里面设置一下本地资源文件名字就可以了,如下代码
public class VendorAppService : ApplicationService, IVendorAppService
{
private readonly VendorManager _vendorManager;
private readonly VendorStore _vendorStore;
private readonly VendorItemStore _vendorItemStore;
private IAbpSession _abpSession;
public VendorAppService(VendorManager vendorManager,
VendorStore vendorStore,
VendorItemStore vendorItemStore,
IAbpSession abpSession)
{
_vendorManager = vendorManager;
_vendorItemStore = vendorItemStore;
_vendorStore = vendorStore;
_abpSession = abpSession;
LocalizationSourceName = VmmPortalConsts.LocalizationSourceName;
}
...省略
希望对大家有帮助