当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《BindingFlags.IgnoreCase不适用于Type.GetProperty()?》经验,为你挑选了3个好方法。

想象一下以下内容

T型有一个现场公司.执行以下方法时,它完美地工作:

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

以下调用我得到了null

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

有人有个主意吗?



1> Pop Catalin..:

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


任何人都知道为什么会这样(要求知识;))

2> leppie..:

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



3> 小智..:

谢谢,这真的帮助我今天紧张.我保存了审核信息,但在属性名称上包含了错误的大小写.(审计是内置于数据层中的.)无论如何,我必须添加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的类的一部分.

推荐阅读
coco2冰冰
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有