2011-05-23 90 views
0

现在我认为很清楚。 我在C#.NET中创建了一个面向对象的数据库,其中有两个类。学生和联系人。联系人在学生内部。我正在检索Object数组中的所有对象。班级学生有nameage,联系人有mobileID动态类型铸造

现在我正在通过文本框创建查询。创建文本框。一个用于选择,一个用于选择。从(var1)类名中被接受,而在select(var2)中,字段名被接受。如果用户想看到所有对象的名字,那么应该输入var2“name”;但我不能够得到这个消息

messageBox.show(obj[0] as Student).var2); 

它给错误VAR2,“对象”不包含“VAR2”和没有扩展方法“VAR2”接受型“对象”的第一个参数的定义可以找到(是否缺少using指令或程序集引用?)

同样的问题,如果不是学生,如果我给VAR1 messageBox.show(obj[0] as var1).var2);

我能做到这一点?

+3

你的问题还不清楚。 – 2011-05-23 06:18:27

+3

开括号和闭括号的数量不匹配 – zerkms 2011-05-23 06:22:35

+0

计算括号,必须在同一行/语句中具有相同数量的(和)。 – 2011-05-23 06:24:13

回答

0

如果不使用反射,则不能这样做。

var2是一个包含属性名称的变量。您不能只说obj.var2并获取名称为var2的属性的值。

你不得不做这样的事情:

var objType = obj[0].GetType(); 
var propInfo = objType.GetProperty(var2); 
var value = propInfo.GetValue(obj[0], null); 
+0

它给出的错误“没有设置对象实例的对象引用” – 2011-05-23 07:49:46

+0

它给出错误“对象引用没有设置到对象的实例 – 2011-05-23 09:31:12

+0

@Bharti Joshi - 哪条线给出了该错误? – 2011-05-23 10:45:52

0

你的语法看起来很奇怪,右括号的数量不符开幕。也许:

MessageBox.show((obj[0] as Student).var2); 

还要确保这个va2属性是Student类中市民:

public string var2 { get; set; }