所以这看起来很基本,但我不能让它工作.我有一个对象,我正在使用反射来访问它的公共属性.这些属性中有一个是静态的,我很难找到它.

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 reflector可以很好地看到静态特性,所以很明显我忽略了一些东西.

推荐答案

对我来说,关键是使用.扁平化层次 struct 绑定标志.我真的不知道为什么我只是凭直觉加上它,然后它就开始起作用了.因此,让我获得公共实例或静态属性的最终解决方案是:

obj.GetType.GetProperty(propName, Reflection.BindingFlags.Public _
  Or Reflection.BindingFlags.Static Or Reflection.BindingFlags.Instance Or _
  Reflection.BindingFlags.FlattenHierarchy)

.net相关问答推荐

StackExchange.Redis和NRedisStack包有什么不同?

为什么.Net 8.0.100是预览版?

如何在PowerShell中隐藏任务延迟输出?

在 F# 中处理 Option - Some(null) 的好策略是什么

如何使用 awslocal 通过 localstack 中的 cloudwatch events/eventbridge 触发 lambda

out 和 ref 可以用作临时变量吗?

问:在 Blazor WASM 应用程序中存储 api 密钥的最佳方式是什么?

根源是什么?

Int32.ToString() 是特定于文化的吗?

发布版本中的 Debug.WriteLine

将笔画应用于 WPF 中的文本块

泛型方法是如何、何时、何地具体化的?

如何将字符串列表数据绑定到 WPF/WP7 中的 ListBox?

序列化私有成员数据

你如何调试 MVC 4 API 路由?

如何使用反射在 .NET 中调用重载方法

有没有像样的 C# 分析器?

在任务中捕获异常的最佳方法是什么?

Microsoft.Bcl.Build NuGet 包有什么作用?

从字节数组中读取 C# 中的 C/C++ 数据 struct