Propertyinfo 获取值非静态值需要目标

Propertyinfo get value non static value requires target

我试图从我的属性中反映一些数据,但我很难弄清楚为什么我会收到错误 "non static value requires target" 我曾尝试将值传递给 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(' ');
        }
    });
}

因为没有实例就没有实例属性。因此,如果不提供 instance.If 就无法获得实例的值 属性 您正在寻找 static 属性使用 BindingFlags.StaticGetProperties.

如果你有一个实例,你需要将它传递给 GetValue 方法而不是 null:

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