想象一下以下内容
T型有一个现场公司.执行以下方法时,它完美地工作:
Type t = typeof(T); t.GetProperty("Company")
以下调用我得到了null
Type t = typeof(T); t.GetProperty("company", BindingFlags.IgnoreCase)
有人有个主意吗?
您已经覆盖了默认的查找标志,如果指定了新标志,则需要提供所有信息以便找到属性.例如:BindingFlags.IgnoreCase | BindingFlags.Public | BindingFlags.Instance
你需要添加 BindingFlags.Public | BindingFlags.Instance
谢谢,这真的帮助我今天紧张.我保存了审核信息,但在属性名称上包含了错误的大小写.(审计是内置于数据层中的.)无论如何,我必须添加IgnoreCase作为绑定标志,但它仍然无法工作,直到我的同事找到了这个答案.由此产生的功能:
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的类的一部分.