EF&LINQ開發實戰 Part2
以前為了要加入一些新的常用方法到現有(不能修改)的型別中,就要多建一些衍生類別,才可使用。
舉例來說:要把字串轉換成數字來運算,就要經過Parse才能運算..如果運算式很多就要寫一堆Parse,
或許有人會說寫函數就好..但就個人寫程式的感覺來說..如果能直接按"."就有方法跑出來讓我使用,
才叫有寫程式的Fee。
C# 3.0就支援這種擴充語法..讓程式更容易直覺式的撰寫與維護。(先決條件當然要有好的方法名稱)
要使用擴充語法必須有三個必要規定:
1.類別必須是static的靜態類別。
2.方法必須是Public和static型態。
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();
}
}
}