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

c#中通过反射在未知类型的数组上强制转换元素

您不需要反射,但对象将保留类型信息。要将对象强制转换为类型,必须在编译时告诉它是哪种类型,可以使用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