2013-10-16 347 views
2

我遇到了一個問題,通過一個簡單的克隆方法來擴展泛型Stack類。這是我的方法:如何擴展在C#中返回泛型值的泛型類?

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> does not contain a definition for ' Clone ' and no extension method ' Clone ' accepting a first argument of type System.Collections.Generic.Stack<string> could be found (are you missing a using directive or an assembly reference?)

我一直在使用Google的溶液或explenation,但已經結束了,沒有運氣。 (這就是我:試過 https://www.google.pl/#q=generic+extension+method+c%23

+4

變化'公共靜態類StackMixin ''到公共靜態類StackMixin' –

+0

我沒有打對... 謝謝! – pizycki

+0

@IlyaBursov - 你應該把你的評論作爲答案。 – Enigmativity

回答

1

按照評論:改變public static class StackMixin<T>public static class StackMixin