使用字符串访问类字段

时间:2013-11-11 15:45:39

标签: c# class reflection field

我有一个类名DB.IFCArray,里面有很多字段(名称,描述等),我想实现一个函数 转到DB.IFCArray.field并做东西......

public static bool if_is_a(DB.IFCArray object1, string field, string value)
        {            
            if (object1.field == value) // this ofc not working, but hope you get the idea
            return true;

            return false;
         }

2 个答案:

答案 0 :(得分:1)

您当然可以使用Reflection

//get the property indicated by parameter 'field'
//Use 'GetField' here if they are actually fields as opposed to Properties
//although the merits of a public field are dubious...
       var prop = object1.GetType().GetProperty(field);
//if it exists
        if (prop!=null)
        {
          //get its value from the object1 instance, and compare
          //if using Fields, leave out the 'null' in this next line:
          var propValue = prop.GetValue(object1,null);

          if (propValue==null) return false;
          return propValue;
        }
        else
        {
          //throw an exception for property not found
        }

但正如上面提到的CodeCaster,我建议你看看你的设计,看看这是否真的有必要。这里的大局是什么?除非你绝对100%在运行之前不知道属性名称,否则几乎总会有更好的方法......

答案 1 :(得分:0)

我认为由于if (object1.field == value)语句中的类型错误而显示错误。 使用反射来获取字段的类型,并根据类型比较值。

希望这有帮助, 感谢。