2012-08-14 80 views
0

我使用的是.Net Framework 3.5使用自己的字典的字典

我需要的東西就像一個Tuple,但我怎麼不擁有它,我創建使用this

所以,我有

public class Tupla<T1, T2> 
     { 
      public T1 First { get; private set; } 
      public T2 Second { get; private set; } 
      internal Tupla(T1 first, T2 second) 
      { 
       First = first; 
       Second = second; 
      } 
     } 

     public static class Tupla 
     { 
      public static Tupla<T1, T2> New<T1, T2>(T1 first, T2 second) 
      { 
       var tuple = new Tupla<T1, T2>(first, second); 
       return tuple; 
      } 
     } 

然後,我需要使用像我自己的元組一個Dictionary與其他一些代碼我的。 對於每個Key,我需要返回一個填充值的Tupla

所以,我創建了class

public class ParametrosMultiples : Dictionary<String, Tupla> 
    { 

    } 

,但它不承認我的Tupla class。 據我所看到的,我可以使用自定義clases(不僅types,像StringInt32等)

我得到的是

類型或命名空間名稱Tupla「不能在錯誤發現(使用指令或程序集引用是否缺少 ?)

但他們都在同一個命名空間,即使在同一.cs(我只提的是,以確保在同一namespace,因爲我們只用一個namespace.cs的約定)

如果我不能使用Tupla,我怎麼可以從Key檢索兩個值?

編輯:

爲了表明我是如何得到我的課:

namespace ReportesWeb.WebApp.App_Shared 
{ 
public class ParametrosMultiples : Dictionary<String, Tupla<Int32, Int32>> 
{ 
} 

// here goes the Tupla code showed above, the two classes 

} 

EDIT2:

我已刪除了Static Tupla(只留下一個Tupla Class),並仍然得到同樣的錯誤,所以不是與名稱衝突的問題

回答

2

您需要指定您的Tupla類的通用參數。

public class ParametrosMultiples : Dictionary<String, Tupla<type1,type2>> 
{ 

} 

雖然你所得到的錯誤似乎表明這個類是無論是在還沒有被引用,或者(如果它被引用或者是在同一個組件)一個單獨的程序,那你有沒有進口它所在的命名空間需要與using directive一起使用。

也似乎有兩個獨立的類(靜態和一個「正常」的一個)具有相同的名稱 - Tupla。這肯定會導致命名衝突。考慮改變其中一個名稱,或將功能合併到一個類中。

+0

嘗試'Dictionary >' 但不工作:/得到相同的錯誤。甚至不認識Tupla intellisense – 2012-08-14 19:19:24

+0

@ElVieejo - 你有沒有導入命名空間? – Oded 2012-08-14 19:20:25

+0

他們在相同的命名空間 – 2012-08-14 19:20:58