キー型が整数で、値型が現在実行中のクラスの型であるディクショナリを作成したいと考えています。
私は次のことを試しました:
Dim col as new Dictionary(Of Integer, Me.GetType())
しかし、`keyword がタイプを指定していないというエラーが表示されます。
実行中のクラスの型に基づいて辞書を作成するにはどうすればよいですか?
キー型が整数で、値型が現在実行中のクラスの型であるディクショナリを作成したいと考えています。
私は次のことを試しました:
Dim col as new Dictionary(Of Integer, Me.GetType())
しかし、`keyword がタイプを指定していないというエラーが表示されます。
実行中のクラスの型に基づいて辞書を作成するにはどうすればよいですか?
型のディクショナリを作成する C# サンプルint
。
使用した方法:
問題は主に、結果の型をある程度型安全な方法で表現することです。に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)
辞書もインデックスに整数を使用するため、キーとして整数を使用しないと混乱する可能性があります。キーが連続する整数である場合は、リストの方が適している場合があります。