如何使用已知的值类型创建Dictionary



我想创建一个字典,其中键类型是整数,值类型是我目前正在执行的类的类型。

我试过以下方法:

Dim col as new Dictionary(Of Integer, Me.GetType())

但是我得到一个错误,说' keyword没有命名一个类型。

如何根据执行类的类型创建字典?

创建int类型字典的c#示例。

方法:

  • 类型。MakeGenericType
  • 类型。GetConstructor
  • ConstructorInfo。调用

问题主要是用某种类型安全的方式表达结果类型。在Dictionary的情况下,可以求助于IDictionary,或者继续使用反射来操纵对象。

也可能以某种方式用通用代码表达大多数操作,这些代码由MakeGenericMethod的更多反射调用

示例:

   var myType = typeof(Guid); // some type
   // get type of future dictionary
   Type generic = typeof(Dictionary<,>);
   Type[] typeArgs = { typeof(int), myType };
   var concrete = generic.MakeGenericType(typeArgs);
   // get and call constructor
   var constructor = concrete.GetConstructor(new Type[0]);
   var dictionary = (IDictionary)constructor.Invoke(new object[0]);
   // use non-generic version of interface to add items
   dictionary.Add(5, new Guid());
   Console.Write(dictionary[5]);
   // trying to add item of wrong type will obviously fail
   // dictionary.Add(6, "test");

直接使用类名Dim col as new Dictionary(Of Integer, MyClass)

在不使用整数作为键的另一方面可能会引起混淆,因为字典也使用整数作为索引。如果键是连续整数,那么使用列表可能会更好。

相关内容

  • 没有找到相关文章

最新更新