BindingFlags.IgnoreCase不适用于Type.GetProperty()?

想象下面

T型有一个公司。 当执行下面的方法时,它完美的工作:

Type t = typeof(T); t.GetProperty("Company") 

下面的电话,但我得到空

 Type t = typeof(T); t.GetProperty("company", BindingFlags.IgnoreCase) 

有人有个想法吗?

你已经覆盖了默认的查找标志,如果你指定了新的标志,你需要提供所有的信息,以便find属性。 例如: BindingFlags.IgnoreCase | BindingFlags.Public | BindingFlags.Instance BindingFlags.IgnoreCase | BindingFlags.Public | BindingFlags.Instance

你需要添加BindingFlags.Public | BindingFlags.Instance BindingFlags.Public | BindingFlags.Instance

谢谢,这真的帮助我今天在一个捏。 我保存了审计信息,但是在属性名称上使用了不正确的shell。 (审计内置到数据层中)无论如何,所以我不得不添加IgnoreCase作为绑定标志,但是直到我的同事find了这个答案,它仍然不起作用。 由此产生的function:

 public static void SetProperty(Object R, string propertyName, object value) { Type type = R.GetType(); object result; result = type.InvokeMember( propertyName, BindingFlags.SetProperty | BindingFlags.IgnoreCase | BindingFlags.Public | BindingFlags.Instance, null, R, new object[] { value }); } 

这是我称之为DotMagic的一部分。

Interesting Posts