我有一个类名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;
}
答案 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)
语句中的类型错误而显示错误。
使用反射来获取字段的类型,并根据类型比较值。
希望这有帮助, 感谢。