c# - 创建服务以根据用户 session 确定字符串格式

标签 c# servicestack

我需要根据用户所在的国家/地区格式化银行帐号。因此,不是每次我需要值时都传递位置,例如:

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/

相关文章:

c# - 找不到数据库文件

c# - DDD实践: Should I create a repository for value objects

c# - 如何在 Unity 3D 中处理体重秤?

redis - 从哈希中清除 X 键

asp.net-mvc - 'ServiceStack.MiniProfiler.IHtmlString' 不包含 'AsRaw' 的定义

c# - Windows Media Player 在全屏模式下检测按键按下

c# - 如何防止类从外部实例化但保持可用?

c# - 使用 Servicestack.Text 进行 XML 反序列化

ServiceStack 自托管站点默认页面

c# - ServiceStack 4 C# 客户端异步调用挂起