我有一个Dictionary对象,其中键的类型为字符串,而值属于对象类型,因为它们是从数据类型的文件中提取的(对于列) )可能会有所不同。
Dictionary<string, object[]> lfileContent;
我想得到每个数组的类型并转换类型。当然,当它们在词典中时,我不能这样做,但是当我提取每个值来使用它们时。例如(我使用逻辑方法使用伪代码C#):
ltype = lfileContent["key1"].Value.GetType();
ltype newarray = (ltype) fileContent["key1"].Value;
我想提出三个问题:
1)当我从文件中获取元素并将其存储为对象时,是否会保留反射用于获取其类型的信息?
2)如果(1)不适用,当我从文件中提取它们时(在字典中插入对象之前),我应该使用反射来获取它们的类型吗?
3)如何使用反射进行此类投射?
由于
弗朗西斯
答案 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