非泛型类中的泛型方法?

Joh*_*nes 22 c# generics

我确定我以前做过这个,但找不到任何例子!哎呀...

例如,我想将IList<T>a 转换为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;
    }
}
Run Code Online (Sandbox Code Playgroud)

San*_*der 34

ToBindingList <T> (...)
Run Code Online (Sandbox Code Playgroud)
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;
    }
}
Run Code Online (Sandbox Code Playgroud)


bru*_*nde 11

这不是更简单吗?

public static class Extensions
{
    public static BindingList<T> ToBindingList<T>(this IList<T> list)
    {
        return new BindingList<T>(list);
    }
}
Run Code Online (Sandbox Code Playgroud)

这很简单,我们不需要扩展方法......

我错过了什么吗?


Ali*_*söz 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;
    }
}
Run Code Online (Sandbox Code Playgroud)