public class DeviceTable
    {
        public const string ID = "ChannelID";
    }public class Test
{
    public virtual void Add()
        {
            DeviceTable  table = new DeviceTable();
            Type tableType = table.GetType();            string columnName = tableType.GetField("ID");//这样是可以的
                   columnName = tableType.GetField("id", BindingFlags.IgnoreCase);
//但是我传入的这个参数的大小写是不一定的。所以需要使用BindingFlags.IgnoreCase,
//我不知道BindingFlags.IgnoreCase需要配合什么才能使用,已经尝试加上BindingFlags.Public | BindingFlags.Instance
            }
        }
}
因为需要匹配的成员字段的大小写是不一定的。所以不能使用ToUppper() 来改变大小写后进行匹配小弟在此先谢了

解决方案 »

  1.   


    FieldInfo fi = tableType.GetField("id", BindingFlags.IgnoreCase | BindingFlags.Public | BindingFlags.Static);
      

  2.   

    不要用Instance,应该是Static。
      

  3.   

    按照楼上兄弟的方法,获取出来 FieldInfo 依然为 null 啊。
    为什么 FieldInfo fi = tableType.GetField("ID");//这样是可以的而只要加上过滤条件就不行了?
      

  4.   


    1楼的应该是对的            DeviceTable table = new DeviceTable();
                Type tableType = table.GetType();            string columnName = tableType.GetField("id", BindingFlags.IgnoreCase | BindingFlags.Public | BindingFlags.Static).Name;//这样是可以的
                Console.WriteLine(columnName);