在代码变量中创建泛型类型
本文关键字:创建 泛型类型 变量 代码 | 更新日期: 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
键/值对。它还可能在试图检索值时导致装箱(因为它返回对象类型)。
也许有人能想出一个非常简洁的方法来保持强类型,但这是我能想到的最接近你要求做的