如何使用object[]Index获取GetValue()的具体值

本文关键字:GetValue 获取 object 何使用 Index | 更新日期: 2023-09-27 18:03:23

我在这个对象propValue中有三个值。下面的代码通过循环我的结果给我所有的值。

如何通过将object[]Index作为第二个参数传递给prop.GetValue来获得值?

结果包含bool、object、string类型。这就是为什么我需要得到一个特定的值。

Type myType = result.GetType();
IList<PropertyInfo> props = new List<PropertyInfo>(myType.GetProperties());
tring str = "";
foreach (PropertyInfo prop in props)
{ 
    object propValue = prop.GetValue(result,null); 
}

如何使用object[]Index获取GetValue()的具体值

如果所有属性都是object[]类型,则:

foreach (PropertyInfo prop in result.GetType().GetProperties())
{ 
    // get object[] {bool, object, string} at once 
    var propValue = (object[])prop.GetValue(result,null);
    var index1 = (bool)propValue[0];
    var index2 = propValue[1];
    var index3 = (string)propValue[2];
}

如果你有不同的属性,那么你可以检查它们的类型。

object的测试是棘手的,因为所有类型都是对象(从Object继承)。当其他测试失败时,您不需要测试它,但假设它存在:

foreach (PropertyInfo prop in result.GetType().GetProperties())
{ 
    var propValue = prop.GetValue(result,null);
    if(propValue is string)
    {
        // do something with string
        continue; // to skip checking for other types
    }
    if(propValue is bool)
    {
        // do something with bool
        continue;
    }
    // do something with object
}

可以用else if模式代替continue