Propertyinfo获取值非静态值需要target

时间:2015-02-10 23:26:15

标签: c# reflection propertyinfo

我试图反映我的属性中的一些数据,并且我很难弄清楚为什么我得到错误“非静态值需要目标”我尝试将值传递给getvalue但没有成功。如果我单步执行代码,属性就在那里,不明白为什么get vlue会抛出错误。

foreach (KeyValuePair<string, object> argument in actionArguments)
{
    Type type = argument.Value.GetType() as Type;
    PropertyInfo[] properties = type.GetProperties();

    Parallel.ForEach(properties, property =>
    {
        if (property.PropertyType == typeof(string))
        {
            string text = property.GetValue(null, null) as string; -- error 
            string[] words = text.Split(' ');
        }
    });
}

1 个答案:

答案 0 :(得分:3)

因为实例属性在没有实例的情况下不存在。因此,如果不提供实例,就无法获取实例属性的值。如果您要查找static属性,请使用BindingFlags.Static GetProperties

如果您有实例,则需要将其传递给GetValue方法而不是 null

string text = property.GetValue(argument.Value) as string;