2016-05-18 22 views
3

我需要根据用户所在的国家/地区对银行帐号进行格式设置。因此,而不是传递地点每次我需要的价值,e.g为:创建服务以根据用户会话确定字符串格式

Account.FormatBankAccountNumber("AU", bsb, accountNumber) 

我想创建其内容从用户会话的位置(这是我们自定义存储的位置)服务的。

到目前为止,这是我:

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); 

所以现在需要这可能只是有服务注入AccountUtilityService,它将根据用户的会话自动返回格式,而不必指定用户的位置。

这有效,但只是想看看别人是否有更好的方式来做到这一点的想法?

+0

只是想知道,BSB和账号不在澳大利亚才有意义吗?这不会使FormatBankAccountNumber非常通用。 – YetAnotherCoder

+0

你说得对,我猜我认为这可能是许多这类逻辑之一。这个例子可能不是一个很好的例子。 – vonec

回答

3

我会说转换为字符串时明确指定格式实际上更清晰;实际上.NET Framework在任何地方都可以做到。

同样遵循.NET Framework的约定,我会将BankAccount转换为类(也可能包括账户的国家/地区),并通过覆盖ToString方法将格式化责任留给自己,同时提供默认格式未指定。

+0

是的,这是我正在走向的方向,但想知道是否有更好的方法。干杯! – vonec