public BankAccountDetails(string sortCode, string accountNumber)
{
accountNumber = PrepareString(accountNumber);
sortCode = PrepareString(sortCode);
switch (accountNumber.Length)
{
case 9:
var chars = sortCode.ToCharArray();
chars[5] = accountNumber[0];
sortCode = new string(chars);
accountNumber = accountNumber.Substring(1);
break;
case 10:
if (SortCode.IsCooperativeBankSortCode(sortCode))
{
accountNumber = accountNumber.Substring(0, 8);
}
else if (SortCode.IsNatWestSortCode(sortCode))
{
accountNumber = accountNumber.Substring(2);
} else
{
throw new ArgumentException(string.Format("Ten Digit Account Numbers can only come from Natwest or Coop sortcodes. {0} does not appear to be either",sortCode));
}
break;
}
SortCode = new SortCode(sortCode);
AccountNumber = AccountNumber.Parse(accountNumber);
}