当尝试使用反射获取字段信息时,我需要使用代码
SomeObject.GetType().GetField(
"FieldName",
System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance)
特别是,我必须同时指定 BindingFlags.NonPublic
和 BindingFlags.Instance
。如果我只指定一个,我会得到一个 null 返回值。
如果我只查看单个字段,为什么需要指定多个绑定(bind)标志类型?
最佳答案
这些标志起到某种过滤器的作用。
如果省略 BindingFlags.NonPublic
,GetField()
函数不会查找 private
、internal
和 protected
字段。
而且您必须指定 BindingFlags.Instance
或 BindingFlags.Static
来定义您要查找的内容。
参见 http://msdn.microsoft.com/en-us/library/6ztex2dc.aspx :
You must specify either BindingFlags.Instance or BindingFlags.Static in order to get a return.
...
Specify BindingFlags.NonPublic to include non-public fields (that is, private, internal, and protected fields) in the search. Only protected and internal fields on base classes are returned; private fields on base classes are not returned.
关于c# - 为什么我需要指定多种类型的绑定(bind)标志才能获取单个字段的信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24889416/