在代码变量中创建泛型类型

本文关键字:创建 泛型类型 变量 代码 | 更新日期: 2023-09-27 17:49:17

我想创建一个容器类,它的工作原理类似于一种目录,但具有多个键和为一个键分配多个值的可能性。可能的键的数量应该是可变的。我想通过为inputTypes中的每个key- type创建一个新字典来实现这一点,该字典包含值列表中的键和值的索引。

    class SampleContainer<Tvalue>
    { 
      public SampleContainer(params Type[]inputTypes)
      {
          foreach(Type t in inputTypes)
          {
             ls.Add(new Dictionary(t,int));//won't compile 
          }
          values=new List<Tvalue>();
      }
       List<Dictionary< ???,int>> ls;/*object as ??? doesn't work,
                                       what to fill in to keep it "generic"*/
       List<Tvalue>values;
    }

在代码变量中创建泛型类型

Try

        List<IDictionary> ls = new List<IDictionary>();
        ls.Add(typeof(Dictionary<,>).MakeGenericType(typeof(int), typeof(bool))
                                    .GetConstructor(Type.EmptyTypes)
                                    .Invoke(null) as IDictionary);

虽然有副作用,IDictionary接口使用object键/值对。它还可能在试图检索值时导致装箱(因为它返回对象类型)。

也许有人能想出一个非常简洁的方法来保持强类型,但这是我能想到的最接近你要求做的