public void Transfer(decimal amount, string fromAccountNumber, string toAccountNumber)
        {
            ITransactAccount account = Repository.GetAccount(fromAccountNumber);

            if (account == null)
            {
                throw new KeyNotFoundException($"Account number {account} does not exist.");
            }
            ITransactAccount toAccount = Repository.GetAccount(toAccountNumber);

            if (toAccount == null)
            {
                throw new KeyNotFoundException($"Account number {toAccount} does not exist.");
            }
            if (!(account is ITransactCashOutAccount))
            {
                throw new InvalidOperationException("Invalid from account type for Transfer.");
            }

            ITransactCashOutAccount fromAccount = (ITransactCashOutAccount)account;

            fromAccount.MoveCashOut(amount);
            toAccount.MoveCashIn(amount);
            Repository.SaveAccount(fromAccount);
            Repository.SaveAccount(toAccount);
            Console.WriteLine($"Successful transfer of {amount:C} from {fromAccount.Name} ({fromAccount.AccountNumber}) to {toAccount.Name} ({toAccount.AccountNumber})");
        }
        public void Deposit(decimal amount, string toAccountNumber)
        {
            ITransactAccount toAccount = Repository.GetAccount(toAccountNumber);

            if (toAccount == null)
            {
                throw new KeyNotFoundException($"Account number {toAccountNumber} does not exist.");
            }

            toAccount.MoveCashIn(amount);
            Repository.SaveAccount(toAccount);
            Console.WriteLine($"Successful deposit of {amount:C} to {toAccount.Name} ({toAccount.AccountNumber})");
        }