如何为IEnumerable <t>设置扩展方法?我应该在哪里申报?

时间:2018-12-21 21:10:25

标签: c#

public static class Analysis
{
    *//I want to use my extensions methods here. To be more specific,
    //I want to do like this:*
    // var array = new int[]{1,2,3};
    // var newArray = array.MyMethod();

}

public static class IEnumerableExtensions<T>
    where T : IComparable
{
    public static IEnumerable<Tuple<T, T>> MyMethod(this IEnumerable<T> source)
    {
        *//here is my method
        //yield return .... ;*
    }
}

这是我得到的错误:扩展方法必须在非通用静态类中声明。 我希望能够将该方法用于int [],double [],DateTime [] ... 我无法在Analisys类中声明此方法,因为它是非泛型的。

1 个答案:

答案 0 :(得分:2)

从类中删除通用参数,并在方法上声明它:

public static class EnumerableExtensions

{
    public static IEnumerable<Tuple<T, T>> MyMethod<T>(this IEnumerable<T> source) 
                                           where T : IComparable
    {
        *//here is my method
        //yield return .... ;*
    }
}