首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >动态类型转换

动态类型转换
EN

Stack Overflow用户
提问于 2011-05-23 14:16:58
回答 2查看 412关注 0票数 0

现在我想这是很清楚的。我在C#.NET中创建了一个面向对象的数据库,其中有两个类。学生和联系人。联系人在学生内部。我正在检索对象数组中的所有对象。学生类有nameage字段,而contact类有mobileID字段。

现在,我正在通过文本框创建查询。已创建文本框。一个用于select,一个用于from。在from(var1)中,接受类名,而在select(var2)中,接受字段名。如果用户想要查看所有对象的名称,则应输入var2 " name“;但我无法获得此消息

代码语言:javascript
复制
messageBox.show(obj[0] as Student).var2);

它提供了错误对象,' var2‘不包含'var2’的定义,并且找不到接受类型为'object‘的第一个参数的扩展方法’var2‘(是否缺少using指令或程序集引用?)

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

我能这么做吗?

EN

回答 2

Stack Overflow用户

发布于 2011-05-23 14:26:42

如果不使用反射,就无法做到这一点。

var2是一个包含属性名称的变量。您不能只说obj.var2,然后获取其名称在var2中的属性的值。

你必须这样做:

代码语言:javascript
复制
var objType = obj[0].GetType();
var propInfo = objType.GetProperty(var2);
var value = propInfo.GetValue(obj[0], null);
票数 0
EN

Stack Overflow用户

发布于 2011-05-23 14:27:07

您的语法看起来很奇怪,右括号的数量与开头不匹配。也许:

代码语言:javascript
复制
MessageBox.show((obj[0] as Student).var2);

还要确保此va2属性在Student类中是公共的:

代码语言:javascript
复制
public string var2 { get; set; }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6093497

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档