1

現在問題に直面しているので、任意のタイプのケースを含む辞書のインスタンスを作成する必要があります。タイプは、メソッドの引数によって提供されます。動的またはオブジェクトタイプのディクショナリを作成するだけではありません。これは、ライブラリを使用することで、ユーザーが多くの変換の問題に直面するためです。また、単純なコンストラクターを使用することもできません。これは、私のメソッドが実際のデータ(ファイルに格納されている)でディクショナリを埋めるためです。型変数によって特定の辞書を作成することが重要です。これは私が考えていることです:

public static Dictionary<dynamic, dynamic> createDict(Type type1, Type type2)
{
    // how to create the dictionary?
    // im filling my dictionary with any data ...
    return dict;
}

ここで、ユーザーは私のメソッドを呼び出します。

Dictionary<string, int> dict = MyLib.createDict(typeof(string), typeof(int));
// or
MyOwnType myInstance = new MyOwnType();
Dictionary<string, MyOwnType> dict = MyLib.createDict(typeof(string), myInstance.GetType());
4

2 に答える 2

4

Genericsを使用すると、次のことができます。

public static Dictionary<T, U> CreateDict<T,U>()
{
    Dictionary<T,U> dict = new Dictionary<T,U>();

    // Fill dictionary with data     

    return dict;
}

その後、ユーザーはこの関数を呼び出すことができます。

var myDict1 = CreateDict<string,int>();
var myDict2 = CreateDict<string,MyOwnType>();
于 2012-07-30T07:46:04.067 に答える
4
Type dictType = typeof(Dictionary<, >).MakeGenericType(Type1, Type2);
var dict = Activator.CreateInstance(dictType);
  • タイプを取得するDictionary
  • を使用して、指定されたタイプでジェネリック型を作成しますMakeGenericType
  • を使用してジェネリック型のインスタンスを作成しますActivator.CreateInstance
于 2012-07-30T08:24:36.493 に答える