.Net类助手方法

时间:2009-07-20 19:54:55

标签: .net oop inheritance extension-methods

有没有办法将类添加到类中,但允许它仍然由基类继承?

我有以下

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

}

我将要有一堆需要随机化的List对象。是否可以将List对象设置为ListFithRandomize对象?我想我可以让randomize函数保持静态并让它采用List&lt;&gt;作为一个参数,但我想把它作为一个类的方法..如果可能的话。

感谢。

5 个答案:

答案 0 :(得分:7)

当您无权访问源时,extension method是唯一可以向类添加方法的方法。

请记住,扩展方法不是类型的实际成员 - 它只是在源代码中看起来像。它不能访问私有或内部变量 - 至少,不是没有反射,但你可能不想这样做。

  

我想我可以让randomize函数保持静态并让它采用List&lt;&gt;作为一个参数,但我想把它作为一个类的方法..如果可能的话。

在这种情况下,扩展方法可能是您最好的选择。

答案 1 :(得分:2)

听起来像是想要一种扩展方法,例如

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

这是一个静态方法,它似乎是List<T>上的实例方法。

答案 2 :(得分:2)

我认为C# 3.0 Extension method会做你想在这里完成的事情。

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

}

答案 3 :(得分:1)

extension方法怎么样?

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

答案 4 :(得分:1)

扩展方法。您可以将Random方法添加到List。这段代码写在这里,所以它可能无法编译。它应该给你一个开始。

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