构造器初始化(三):巧用Static方法和base关键字

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

//如何运行前不知道的值传递给 CommandDelimitedFile构造器?答案:使用静态方法,与base关键字一起使用。
namespace InitialConstruct
{
    class CommandDelimitedFile
    {
        public CommandDelimitedFile(string fileName)
        {
            Console.WriteLine("[CommandDelimitedFile."+"CommaDelimitedFile] file name={0}",fileName);
        }
    }
    enum TableId
    {
        Customers,
        Suppliers,
        Vendors
    }
    class DbTable : CommandDelimitedFile
    {
        static string GetFileName(TableId tableId)
        {
            string fileName;
            switch (tableId)
            {
                case TableId.Customers:
                    fileName = "customers.txt";
                    break;
                case TableId.Suppliers:
                    fileName = "suppliers.txt";
                    break;
                case TableId.Vendors:
                    fileName = "venders.txt";
                    break;
                default:
                    throw new ArgumentNullException("DbTable.GetFileName] Could not rsolve table name");

            }
            return fileName;
        }
        public DbTable(TableId tableId)
            : base(GetFileName(tableId))
        {
            Console.WriteLine("[DbTable.DbTable] tableId={0} ", tableId.ToString());
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("[Main] Instantianting a " + "Customer Table object...");
            DbTable derived = new DbTable(TableId.Customers);         
            Console.ReadKey();
        }
       
    }
}
  
posted @ 2011-03-04 22:34  焦涛  阅读(253)  评论(0)    收藏  举报