我需要根据用户所在的国家/地区格式化银行帐号。因此,不是每次我需要值时都传递位置,例如:
Account.FormatBankAccountNumber("AU", bsb, accountNumber)
我正在考虑创建一个服务来从用户的 session 中读取位置(我们已自定义以存储位置)。
到目前为止,这是我所拥有的:
public class AccountUtilityService : Service
{
public string FormatBankAccountNumber(string bsb, string accountNumber, bool obfuscate = false)
{
var session = base.SessionAs<CustomAuthSession>();
if (obfuscate) {
accountNumber = accountNumber.ObfuscationSensitiveInformation();
}
if (session.Region == RegionCodes.AU) {
return string.Format("({0}) - {1}", bsb, accountNumber);
}
return accountNumber;
}
}
然后我只需要像这样自动连接它:
container.RegisterAutoWired<AccountDetailUtilityService>().ReusedWithin(Funq.ReuseScope.None);
所以现在所有需要这个的服务都可以注入(inject) AccountUtilityService,它会根据用户的 session 自动返回格式,而无需指定用户的位置。
这行得通,但只是想看看其他人是否有更好的方法来做到这一点?
最佳答案
我会说在转换为字符串时显式指定格式实际上更清楚;事实上,.NET Framework 无处不在。
同样遵循 .NET Framework 的约定,我将 BankAccount 转换为一个类(并且可能在其中包含帐户的国家/地区),并通过覆盖 ToString
方法将格式化责任留给自己,同时如果未指定格式,则提供默认格式。
关于c# - 创建服务以根据用户 session 确定字符串格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37291424/