如何获得带有反射的静态属性?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (14)

所以这看起来很基本,但我无法让它工作。我有一个对象,我使用反射来获取它的公共属性。其中一个属性是静态的。

Public Function GetProp(ByRef obj As Object, ByVal propName as String) as PropertyInfo
    Return obj.GetType.GetProperty(propName)

End Function

上面的代码适用于公共实例属性,到目前为止,这些属性都是我所需要的。据我可以使用BindingFlags来请求其他类型的属性(私人,静态),但我似乎无法找到正确的组合。

Public Function GetProp(ByRef obj As Object, ByVal propName as String) as PropertyInfo
    Return obj.GetType.GetProperty(propName, Reflection.BindingFlags.Static Or Reflection.BindingFlags.Instance Or Reflection.BindingFlags.Public)

End Function

但仍然请求任何静态成员不返回任何内容。.NET反射器可以看到静态属性就好了,所以很明显我在这里丢失了一些东西。

提问于
用户回答回答于

这是C#,但是应该给你一个想法:

public static void Main() {
    typeof(Program).GetProperty("GetMe", BindingFlags.NonPublic | BindingFlags.Static);
}

private static int GetMe {
    get { return 0; }
}

用户回答回答于

看看这个

Type type = typeof(MyClass); // MyClass is static class with static properties
foreach (var p in type.GetProperties())
{
   var v = p.GetValue(null, null); // static classes cannot be instanced, so use null...
}

扫码关注云+社区