gpt4 book ai didi

c# - 向 IEnumerable 等接口(interface)添加通用扩展方法

转载 作者:太空狗 更新时间:2023-10-29 20:57:20 26 4
gpt4 key购买 nike

我一直在尝试并尝试让我的通用扩展方法起作用,但它们就是拒绝,而且我无法弄清楚原因This thread didn't help me, although it should.

当然,我已经查过如何做,到处都看到他们说这很简单,应该采用这种语法:
(在某些地方我读到我需要在参数decleration之后添加“where T:[type]”,但我的VS2010只是说这是一个语法错误。)

using System.Collections.Generic;
using System.ComponentModel;

public static class TExtensions
{
public static List<T> ToList(this IEnumerable<T> collection)
{
return new List<T>(collection);
}

public static BindingList<T> ToBindingList(this IEnumerable<T> collection)
{
return new BindingList<T>(collection.ToList());
}
}

但这行不通,我得到了这个错误:

The type or namespace name 'T' could not be found (are you missing a using directive or an assembly reference?)

如果我再替换

public static class TExtensions

通过

public static class TExtensions<T>

它给出了这个错误:

Extension method must be defined in a non-generic static class

非常感谢任何帮助,我真的被困在这里了。

最佳答案

我认为您缺少的是使 T 中的方法 通用:

public static List<T> ToList<T>(this IEnumerable<T> collection)
{
return new List<T>(collection);
}

public static BindingList<T> ToBindingList<T>(this IEnumerable<T> collection)
{
return new BindingList<T>(collection.ToList());
}

注意 <T>在每个方法的名称之后,在参数列表之前。这表示它是一个具有单一类型参数的通用方法,T .

关于c# - 向 IEnumerable 等接口(interface)添加通用扩展方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6423152/

26 4 0