如何在C#中扩展返回泛型值的泛型类?

时间:2013-10-16 21:48:03

标签: c# generics stack extension-methods

我在使用简单的Clone方法扩展泛型Stack类时遇到了问题。这是我的方法:

class Program
{
    static void Main(string[] args)
    {
        Stack<string> myStack = new Stack<string>();
        myStack.Push("hello!");

        var stackClone = myStack.Clone();

    }
}

public static class StackMixin<T>
{
    public static Stack<T> Clone<T>(this Stack<T> stackToClone)
    {
        if (stackToClone == null)
            throw new ArgumentNullException();

        IEnumerable<T> reversedStackToClone = stackToClone.Reverse<T>();
        Stack<T> cloneStack = new Stack<T>(reversedStackToClone);
        return cloneStack;
    }
}

我收到以下错误:

  

System.Collections.Generic.Stack<string>不包含   “Clone”的定义,并且没有任何扩展方法“Clone”接受   System.Collections.Generic.Stack<string>类型的第一个参数   可以找到(你错过了使用指令或程序集   引用?)

我一直在谷歌搜索解决方案或表达,但最终没有运气。 (这就是我所做的:尝试过 https://www.google.pl/#q=generic+extension+method+c%23

1 个答案:

答案 0 :(得分:1)

根据评论:将public static class StackMixin<T>更改为public static class StackMixin