我想创建一个容器类,其工作方式类似于一种目录,但具有多个键,并且可以为一个键分配多个值。可能的键数应该是可变的。我想通过为inputTypes中的每个key-Type创建一个新的Dictionary来实现这一点,该Dictionary包含键和值列表中值的索引。
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;
}
答案 0 :(得分:1)
尝试
List<IDictionary> ls = new List<IDictionary>();
ls.Add(typeof(Dictionary<,>).MakeGenericType(typeof(int), typeof(bool))
.GetConstructor(Type.EmptyTypes)
.Invoke(null) as IDictionary);
虽然存在副作用,IDictionary
接口使用object
键/值对。它在尝试检索值时也可能导致装箱(因为它返回对象类型)。
也许有人可以想出一个非常简洁的方法去做并保持强力打字,但这是我能想到的最接近你想要做的事情。