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

本文关键字:泛型 泛型类 返回 扩展 | 更新日期: 2023-09-27 18:35:45

我在使用简单的克隆方法扩展通用堆栈类时遇到问题。这是我的方法:

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)

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

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