我试图反映我的属性中的一些数据,并且我很难弄清楚为什么我得到错误“非静态值需要目标”我尝试将值传递给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(' ');
}
});
}
答案 0 :(得分:3)
因为实例属性在没有实例的情况下不存在。因此,如果不提供实例,就无法获取实例属性的值。如果您要查找static
属性,请使用BindingFlags.Static
GetProperties
。
如果您有实例,则需要将其传递给GetValue
方法而不是 null :
string text = property.GetValue(argument.Value) as string;