2009-01-08 203 views
18

我确信我以前做过这个,但找不到任何示例!哎呀...非泛型类中的泛型方法?

例如,我想转换一个IList<T>BindingList<T>

public class ListHelper 
{ 
    public static BindingList<T> ToBindingList(IList<T> data) 
    { 
     BindingList<T> output = new BindingList<T>(); 

     foreach (T item in data) 
      output.Add(item); 

     return output; 
    } 
} 
+0

这里的实际问题是什么?是的,泛型方法在非泛型类中很好(System.Linq.Enumerable可能是最大的例子)。 – 2009-01-08 08:53:18

+2

@Jon - 他错过了ToBindingList中的 2009-01-08 08:56:59

回答

31
ToBindingList <T> (...) 

public class ListHelper 
{ 
    public static BindingList<T> ToBindingList<T>(IList<T> data) 
    { 
     BindingList<T> output = new BindingList<T>(); 

     foreach (T item in data) 
     { 
      output.Add(item); 
     } 

     return output; 
    } 
} 
7

您可以通过扩展方法做到这一点,它会更好。

public static class Extensions 
{ 
    public static BindingList<T> ToBindingList<T>(this IList<T> list) 
    { 
     BindingList<T> bindingList = new BindingList<T>(); 

     foreach (var item in list) 
     { 
      bindingList.Add(item); 
     } 

     return bindingList; 
    } 
} 
+0

这就是我的做法...甚至可能来自IEnumerable (sinc所有你做的都是foreach) – 2009-01-08 08:57:41

11

难道这不是更简单吗?

public static class Extensions 
{ 
    public static BindingList<T> ToBindingList<T>(this IList<T> list) 
    { 
     return new BindingList<T>(list); 
    } 
} 

它是如此简单,我们并不需要一个扩展方法...

我缺少的东西?