2009-07-20 93 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 
    } 
}