2012-08-23 29 views
0

我在Here中發現了一個話題,它講述瞭如何從MVC中的enum創建下拉列表。 下面是主題中的答案:如何在C#中實現擴展方法?

Martin Faartoft說:

我滾符文的回答到一個擴展方法:

public static SelectList ToSelectList<TEnum>(this TEnum enumObj) 
{ 
    var values = from TEnum e in Enum.GetValues(typeof(TEnum)) 
       select new { Id = e, Name = e.ToString() }; 

    return new SelectList(values, "Id", "Name", enumObj); 
} 

我正好需要做到這一點,但它使用的擴展方法我不知道它是什麼以及我如何實現它。 所以任何人都可以幫助我得到這段代碼工作? 我需要知道什麼是擴展方法,以及如何實現它們。

感謝

+2

您是否嘗試過查看擴展方法的MSDN文檔? http://msdn.microsoft.com/en-us/library/bb383977.aspx – Manatherin

回答

1

擴展方法是static類的成員,具有一個或多個參數,這些參數中的第一個必須與this關鍵字作爲您的代碼示例中歸因。

從此,只要包含該類的名稱空間被添加爲using語句,就可以在給定類型的任何實例上使用擴展方法。

樣的一類持有擴展方法:

public static class ExtensionMethods 
{ 
    public static string Reverse(this string source) 
    { 
     string result = String.Empty; 
     for (int i = 0; i < source.Length; i++) 
      result = source.Substring(i, 1) + result; 

     return result; 
    } 
} 

使用像

string toBeReversed = "Hello World"; 
string reversed = toBeReversed.Reverse(); 

整點這個擴展的方法是不從實際繼承功能添加到現有的類型。使用擴展方法,您可以將新功能「附加」到任何給定類型,而無需實際更改它。

+1

我的評論不是關於擴展方法,而是關於反向函數。切勿通過字符串來執行此功能。對字符串內部的循環使用StringBuilder。 –

+0

感謝哥們。我會嘗試一下,看看它是否適用於我;) – Ali

+0

@KirillBestemyanov:我知道:-)通常我也是這樣,但是,因爲它只是爲了示範,我認爲它可能是好的。 –