现在我想这是很清楚的。我在C#.NET中创建了一个面向对象的数据库,其中有两个类。学生和联系人。联系人在学生内部。我正在检索对象数组中的所有对象。学生类有name和age字段,而contact类有mobileID字段。
现在,我正在通过文本框创建查询。已创建文本框。一个用于select,一个用于from。在from(var1)中,接受类名,而在select(var2)中,接受字段名。如果用户想要查看所有对象的名称,则应输入var2 " name“;但我无法获得此消息
messageBox.show(obj[0] as Student).var2);它提供了错误对象,' var2‘不包含'var2’的定义,并且找不到接受类型为'object‘的第一个参数的扩展方法’var2‘(是否缺少using指令或程序集引用?)
如果我给var1 messageBox.show(obj[0] as var1).var2);而不是学生,也会出现同样的问题
我能这么做吗?
发布于 2011-05-23 14:26:42
如果不使用反射,就无法做到这一点。
var2是一个包含属性名称的变量。您不能只说obj.var2,然后获取其名称在var2中的属性的值。
你必须这样做:
var objType = obj[0].GetType();
var propInfo = objType.GetProperty(var2);
var value = propInfo.GetValue(obj[0], null);发布于 2011-05-23 14:27:07
您的语法看起来很奇怪,右括号的数量与开头不匹配。也许:
MessageBox.show((obj[0] as Student).var2);还要确保此va2属性在Student类中是公共的:
public string var2 { get; set; }https://stackoverflow.com/questions/6093497
复制相似问题