none
IBankAccount 未包含TransferTo的定义,出现在图片中的一个错误 RRS feed

  • 问题

  • using System;
    using System.Collections.Generic;
    //using System.Linq;
    using System.Text;
    //using System.Threading.Tasks;
    using ProCSharp;
    using VenusBank;
    using JupiterBank;
    using Current;



    namespace ProCSharp
    {
        public interface IBankAccount
        {
            void PayIn(decimal amount);
            bool Withdraw(decimal amount);
            decimal Balance
            {
                get;
            }
        }

        public interface ITransferBankAccount : IBankAccount
        {
            bool TransferTo(IBankAccount destination,decimal amount);
        }

        /*public class CurrentAccount : ITransferBankAccount
        {
            private decimal balance;
            public void PayIn(decimal amount)
            {
                balance += amount;
            }
            public bool Withdraw(decimal amount)
            {
                if(balance>=amount)
                {
                    balance -= amount;
                    return true;
                }
                Console.WriteLine("Withdraw attempt failed 取出失败");
                return false;
            }
            public decimal Balance
            {
                get
                {
                    return balance;
                }
            }

            public bool TransferTo(IBankAccount destination, decimal amount)
            {
                bool result;
                if ((result = Withdraw(amount)) == true)
                    destination.PayIn(amount);
                return result;
            }
            public override string ToString()
            {

                    return String.Format("Jupiter Bank Current Account:Balance={0,6:c} 朱比特银行的现有账户有{1,6:c}", balance,balance);

            }
        }*/

        class MainEntryPoint
        {
            static void Main()
            {
                IBankAccount venusAccount = new SaverAccount();   //using VenusBank; 语句不用后,这个运行不了
                IBankAccount jupiterAccount = new CurrentAccount();    //using JupiterBank; 语句不用后,这个运行不了
                venusAccount.PayIn(200);
                jupiterAccount.PayIn(500);
                jupiterAccount.TransferTo(venusAccount,100);
                Console.WriteLine(venusAccount.ToString());
                Console.WriteLine(jupiterAccount.ToString());
                Console.ReadLine();
            }
        }


    }

    namespace VenusBank
    {
        public class SaverAccount : IBankAccount
        {
            private decimal balance;
            public void PayIn(decimal amount)
            {
                balance += amount;
            }

            public bool Withdraw(decimal amount)
            {
                if (balance >= amount)
                {
                    balance -= amount;
                    return true;
                }
                Console.WriteLine("withdraw attempt failed. 取款失败");  //钱不够,取不出
                return false;
            }

            public decimal Balance
            {
                get
                {
                    return balance;
                }
            }

            public override string ToString()
            {
                return String.Format("VenusBank Saver : Balance = {0,6:C}", balance);
            }
        }
    }

    namespace JupiterBank              //书上写成ProCSharpJupiterBank,搞到ToString没法重写
    {
        public class GoldAccount : IBankAccount
        {
            private decimal balance;
            public void PayIn(decimal amount)
            {
                balance += amount;
            }

            public bool Withdraw(decimal amount)
            {
                if (balance >= amount)
                {
                    balance -= amount;
                    return true;
                }
                Console.WriteLine("withdraw attempt failed. 取款失败");  //钱不够,取不出
                return false;
            }

            public decimal Balance
            {
                get
                {
                    return balance;
                }
            }

            public override string ToString()
            {
                return String.Format("JupiterBank Saver : Balance = {0,6:C}", balance);
            }
        }
    }

    namespace Current
    {
        public class CurrentAccount : ITransferBankAccount
        {
            private decimal balance;
            public void PayIn(decimal amount)
            {
                balance += amount;
            }
            public bool Withdraw(decimal amount)
            {
                if (balance >= amount)
                {
                    balance -= amount;
                    return true;
                }
                Console.WriteLine("Withdraw attempt failed 取出失败");
                return false;
            }
            public decimal Balance
            {
                get
                {
                    return balance;
                }
            }

            public bool TransferTo(IBankAccount destination, decimal amount)
            {
                bool result;
                if ((result = Withdraw(amount)) == true)
                    destination.PayIn(amount);
                return result;
            }
            public override string ToString()
            {

                return String.Format("Jupiter Bank Current Account:Balance={0,6:c} 朱比特银行的现有账户有{1,6:c}", balance, balance);

            }
        }
    }

                           
    2017年5月19日 13:34

全部回复

  • Main方法这样修改一下

      class MainEntryPoint
        {
            static void Main()
            {
                IBankAccount venusAccount = new SaverAccount();   //using VenusBank; 语句不用后,这个运行不了
                ITransferBankAccount jupiterAccount = new CurrentAccount();    //using JupiterBank; 语句不用后,这个运行不了
                venusAccount.PayIn(200);
                jupiterAccount.PayIn(500);
                jupiterAccount.TransferTo(venusAccount, 100);
                Console.WriteLine(venusAccount.ToString());
                Console.WriteLine(jupiterAccount.ToString());
                Console.ReadLine();
            }
        }


    专注于.NET ERP/CRM开发框架,C/S架构,SQL Server + ORM(LLBL Gen Pro) + Infragistics WinForms

    2017年5月20日 0:59
  • 成功了,谢谢
    2017年5月20日 9:33