使用C#中的反射在未知类型的数组上转换元素

时间:2011-04-29 14:58:43

标签: c# arrays reflection casting

我有一个Dictionary对象,其中的类型为字符串,而属于对象类型,因为它们是从数据类型的文件中提取的(对于列) )可能会有所不同。

Dictionary<string, object[]> lfileContent;

我想得到每个数组的类型并转换类型。当然,当它们在词典中时,我不能这样做,但是当我提取每个来使用它们时。例如(我使用逻辑方法使用伪代码C#):

ltype = lfileContent["key1"].Value.GetType();
ltype newarray = (ltype) fileContent["key1"].Value;

我想提出三个问题:

1)当我从文件中获取元素并将其存储为对象时,是否会保留反射用于获取其类型的信息?

2)如果(1)不适用,当我从文件中提取它们时(在字典中插入对象之前),我应该使用反射来获取它们的类型吗?

3)如何使用反射进行此类投射?

由于

弗朗西斯

1 个答案:

答案 0 :(得分:0)

您不需要Reflection,但该对象将保留类型信息。要将对象转换为类型,您必须在编译时告诉它哪种类型,您可以使用Reflection来动态操作对象,但这与将其作为类型强制转换不同。我会用这样的东西:

string[] stringArray = fileContent["Key1"].Value as string[];
if (stringArray != null) {
    // the object is a string[] type, it is safe to use the stringArray variable
}

// and continue for other types that may be stored in the dictionary