c#中通过反射在未知类型的数组上强制转换元素
本文关键字:数组 元素 转换 类型 反射 未知 | 更新日期: 2023-09-27 17:54:02
我有一个Dictionary对象,其中键为字符串类型,值为对象类型,因为它们是从数据类型(对于列)可能不同的文件中提取的。
Dictionary<string, object[]> lfileContent;
我想获得每个数组的类型并转换类型。当然,当它们在字典中时,我不能这样做,但是当我提取每个值以使用它们时。例如(我使用逻辑方法的伪代码c#):
ltype = lfileContent["key1"].Value.GetType();
ltype newarray = (ltype) fileContent["key1"].Value;
我想提三个问题:
1)当我从文件中获取元素并将它们存储为对象时,它们会保留反射用于获取其类型的信息吗?
2)如果(1)不适用,当我从文件中提取它们时(在字典中插入对象之前),我是否应该使用反射来获取它们的类型?
3)我如何使用反射来进行这样的投射?
感谢Francesco
您不需要反射,但对象将保留类型信息。要将对象强制转换为类型,必须在编译时告诉它是哪种类型,可以使用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