想象一下
类型T有一个字段Company。 当执行以下方法时,它工作得很好:
Type t = typeof(T); t.GetProperty("Company")
下面的调用得到null
Type t = typeof(T); t.GetProperty("company", BindingFlags.IgnoreCase)
有人知道吗?
你需要添加BindingFlags.Public | BindingFlags.Instance
BindingFlags.Public | BindingFlags.Instance
你已经覆盖了默认的查找标志,如果你指定了新的标志,你需要提供所有的信息,这样属性就可以被找到。例如:BindingFlags.IgnoreCase | BindingFlags.Public | BindingFlags.Instance
BindingFlags.IgnoreCase | 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的课程的一部分。