C# 反射(reflection)为什么 GetFields 会列出我尚未创建的字段?如何排除它们?

标签 c# .net wpf

此代码返回我创建的字段以及一些系统字段(我在 WPF 应用程序中)我没有创建自己:

FieldInfo[] fieldInfos;
fieldInfos = this.GetType().GetFields(BindingFlags.NonPublic | BindingFlags.Instance);

如何排除系统字段,只保留我自己的?

更新:这些字段也不是我从我自己的类继承的字段。

最佳答案

我假设您继承自 object 以外的东西 - 在这种情况下添加 DeclaredOnly到您的 GetFields 调用:

DeclaredOnly

Specifies that only members declared at the level of the supplied type's hierarchy should be considered. Inherited members are not considered.

所以你会:

FieldInfo[] fieldInfos = this.GetType().GetFields(
     BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly);

关于C# 反射(reflection)为什么 GetFields 会列出我尚未创建的字段?如何排除它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4837010/

相关文章:

c# - WPF C# 应用程序产生两个主窗口的问题

WPF TextBox 滚动条实际上​​是否可见?

c# - 如何只允许 WPF 窗口的高度可调整?

c# - 在 .NET 中计算列表最小值/最大值的最短代码

c# - 在 .NET 中创建插件环境的最佳方式

c# - 表格启动后如何更新?

c# - 值在 ComboBox 中不可见

c# - 在 ASP.NET Core 中测量异步与同步代码的性能

c# - 在 MVVM WPF 应用程序中的 View 模型之间传递应用程序状态

c# - Entity Framework 使用单个查询进行多次计数