EF&LINQ開發實戰 Part2

EF&LINQ開發實戰 Part2

以前為了要加入一些新的常用方法到現有(不能修改)的型別中,就要多建一些衍生類別,才可使用。

舉例來說:要把字串轉換成數字來運算,就要經過Parse才能運算..如果運算式很多就要寫一堆Parse,

或許有人會說寫函數就好..但就個人寫程式的感覺來說..如果能直接按"."就有方法跑出來讓我使用,

才叫有寫程式的Fee擊掌

C# 3.0就支援這種擴充語法..讓程式更容易直覺式的撰寫與維護。(先決條件當然要有好的方法名稱)

要使用擴充語法必須有三個必要規定:

1.類別必須是static的靜態類別。

2.方法必須是Publicstatic型態。

3.第一個參數必須以this關鍵字當為宣告

以下兩個範例:

1.字串可以轉換成Int的擴充方法。

2.發生Excption自動寫Log擴充方法。

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

namespace UExtensionMethod
{
    class Program
    {
        static void Main(string[] args)
        {

            string str = "5";
            int i=0;
            try
            {
                i = str.StringToInt();
                Console.Write(100 / i);  
                throw new Exception("Test ExtensionString"); 
            }
            catch (Exception exx)
            {
                exx.SaveExcption(); 
            }
            Console.ReadKey();
        }
    }
    // 1.類別必須是static的靜態類別
    public static class ExtensionExcption
    {
        //2方法必須是Public和static型態
        //3第一個參數必須以this關鍵字當為宣告
        public static int StringToInt(this string si)
        {
            return int.Parse(si);
        }
        public static void SaveExcption(this Exception exx)
        {
            StreamWriter sw = new StreamWriter( DateTime.Now.ToString("yyyyMMddHHmmss")    + ".log", true);
            sw.WriteLine(exx.Message );
            sw.Close();
        }
    }
}