繁体   English   中英

通过字符串名称获取静态属性的值

[英]Getting value of static property by string name

这里有一篇很棒的文章它提供了一种通过字符串名称获取属性值的方法:

public static object GetPropValue(object src, string propName)
{
    return src.GetType().GetProperty(propName).GetValue(src, null);
}

当前,我正在尝试获取基类中静态属性的值。 但是,如果尝试将BaseClass.Prop用作'src', BaseClass.Prop得到一个null引用异常。 尽管src与显式实例没有关联,但我尝试获取的Prop的值仍然存在。

是否有解决静态属性的方法?

调用static属性时不要发送src

 Type t = src.GetType();

 if (t.GetProperty(propName).GetGetMethod().IsStatic)
 {   
     src = null;
 }
 return t.GetProperty(propName).GetValue(src, null);

要获得静态属性,您不能传递对象引用。 要检测属性获取是否为静态,请查看propertyInfo.GetGetMethod().IsStatic 这是您的GetPropValue方法:

public static object GetPropValue(object src, string propName)
{
    var propertyInfo = src.GetType().GetProperty(propName);
    if (propertyInfo.GetGetMethod().IsStatic)
        return propertyInfo.GetValue(null, null);
    else
        return propertyInfo.GetValue(src, null);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM