BindingFlags.IgnoreCase 不适用于 Type.GetProperty()?
想象一下下面的
A 类型 T 有一个 Company 字段。 执行以下方法时,它工作得很好:
Type t = typeof(T);
t.GetProperty("Company")
但以下调用我得到 null 吗?
Type t = typeof(T);
t.GetProperty("company", BindingFlags.IgnoreCase)
尽管有人有想法,
Imagine the following
A type T has a field Company.
When executing the following method it works perfectly:
Type t = typeof(T);
t.GetProperty("Company")
Whith the following call I get null though
Type t = typeof(T);
t.GetProperty("company", BindingFlags.IgnoreCase)
Anybody got an idea?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您已经覆盖了默认的查找标志,如果您指定新标志,则需要提供所有信息以便可以找到该属性。 例如:BindingFlags.IgnoreCase | BindingFlags.Public | BindingFlags.Public | BindingFlags.Instance
You've overwritten the default look-up flags, if you specify new flags you need to provide all the info so that the property can be found. For example:
BindingFlags.IgnoreCase | BindingFlags.Public | BindingFlags.Instance
您需要添加 BindingFlags.Public | BindingFlags.Instance
You need to add
BindingFlags.Public | BindingFlags.Instance
谢谢,今天这真的帮了我的忙。 我保存了审核信息,但属性名称的大小写不正确。 (审核内置于数据层中。)无论如何,我必须添加 IgnoreCase 作为绑定标志,但它仍然不起作用,直到我的同事找到了这个答案。 结果函数:
这是我称为 DotMagic 的类的一部分。
Thanks, this really helped me out in a pinch today. I had audit information saved, but with incorrect casing on the property names. (The auditing is built into a datalayer.) Anyway so I had to add IgnoreCase as a binding flag, but then it still didn't work, till my coworker found this answer. The resulting function:
This is part of a class I call DotMagic.