字典与自己的元组

时间:2012-08-14 19:15:32

标签: c# .net-3.5 dictionary namespaces

我正在使用.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)并仍然得到相同的错误,因此不存在与名称冲突的问题

1 个答案:

答案 0 :(得分:2)

您需要指定Tupla类的通用参数。

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

}

虽然你得到的错误似乎表明这个类要么是在一个未引用的单独程序集中,要么(如果它被引用或在同一个程序集中),那么你还没有导入它所居住的命名空间进入需要使用using directive

的类

您似乎还有两个具有相同名称的独立类(静态和“正常”) - Tupla。这肯定会导致命名冲突。请考虑更改其中一个的名称,或将功能合并到一个类中。