2009-07-20 48 views
1

有沒有辦法給類添加一個方法,但是仍然允許它繼承基類?.Net類助手方法

我有以下

public class ListWithRandomize<T> : List<T> { 
    public void Randomize() { // Randomize function} 

} 

我將有一堆,將需要進行隨機列表對象。有沒有可能有一個List對象,我可以「製作」成ListWithRandomize對象?我想我可以讓隨機化函數爲靜態的,並且它將一個List <>作爲參數,但是我想將它作爲類的一個方法..如果可能的話。

謝謝。

回答

7

extension method是您無法訪問源時可以將方法添加到類的唯一方法。

請記住,擴展方法不是類型的實際成員 - 它看起來就像在源代碼中那樣。它不能訪問私有或內部變量 - 至少不是沒有反思,但你可能不想這樣做。

我想我可以只作隨機化功能的靜態和有它採取列表<>作爲參數,但我想如果可能的話,以它作爲類的方法..。

在這種情況下,擴展方法可能是您最好的選擇。

+0

我喜歡這個板子。謝謝你們...... – Rob 2009-07-20 20:18:41

2

聽起來像你想要一個擴展方法,例如,

public static void Randomize(this List<T> list) 
{ 
    // ... 
} 

這是將顯示爲上List<T>一個實例方法的靜態方法。

1

怎麼樣extension方法?

public static void Randomize<T>(This IList<T> list) 
{ 
    //randomize 
} 
2

我認爲C# 3.0 Extension method會做你在這裏試圖完成的。

public static class MyListExtension { 
    public static void Randomize(this List<T> list){...} 

} 
1

擴展方法。您可以將隨機化方法添加到列表。這段代碼是在這裏編寫的,所以它可能不會complile。它應該給你一個開始。

public static class Extenstions 
{ 
    public static List<T> Randomize<T>(this List<T> list) 
    { 
     // randomize into new list here 
    } 
}