1

目前我面临的问题是我需要使用任何类型的案例创建一个 Dictionary 实例。类型由方法的参数传递。我不只是想创建一个动态或对象类型的字典,因为这会通过使用我的库来面对用户很多转换问题。我也不能使用简单的构造函数,因为我的方法用真实的数据(存储在文件中)填充 Dictionary。按类型变量创建特定字典很重要。这就是我的想法:

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

使用泛型,您可以执行以下操作:

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 回答