通过String Force大写获取属性?

时间:2012-02-09 20:25:50

标签: c#

我正在使用反射的C#GetProperty方法。

  

obj.GetType()。的getProperty( “COLUMNNAME”)

但是我不能保证列名的确切外壳,因为它来自外部源。它可能是ColumnNamecolumnname

我在想是否可以强制将字符串列名强制为大写,但是如何处理对象本身的属性呢? getProperty方法看起来需要是精确的套管吗?

4 个答案:

答案 0 :(得分:7)

您可以使用

var prop = GetProperty("columnname",
                       BindingFlags.Instance | 
                       BindingFlags.Public | 
                       BindingFlags.IgnoreCase);

请注意,您仍然需要InstancePublic位(假设此 是公共实例属性),否则它将找不到任何内容。< / p>

答案 1 :(得分:6)

查找属性时可以忽略这种情况。

GetProperty(fieldname, BindingFlags.IgnoreCase | BindingFlags.Public | BindingFlags.Instance);

答案 2 :(得分:1)

尝试:

var yourprop = from x in obj.GetType().GetProperties()
               where x.Name.ToUpper() == "a column name".ToUpper()
               select x;

答案 3 :(得分:1)

你总是可以将反射与一些Linq魔法相结合,如下所示:

var property = typeof (MyType).GetProperties()
   .Where(p => p.Name.Equals("MyProperty", StringComparison.InvariantCultureIgnoreCase));