【发布时间】:2010-05-06 13:19:31
【问题描述】:
通过反射,您可以在运行时从字符串中查找类,但您也可以说 typeof(Foo) 并获得编译时类型检查、自动完成等。
如果你想要的是一个字段而不是一个类,你可以在运行时从一个字符串中查找它,但是如果你想要编译时类型检查等,是否有类似 fieldof(Foo.Bar) 的说法?我事先知道类和字段的名称,并且我希望能够在编译时引用该字段,而不是通过运行时字符串查找。
编辑:我想用它的一个例子,比如说我有一个可能已经从数据库中读取的对象列表,我想在 DataGridView 中显示它们,但我只想显示列对于某些领域。我想写一个类似的方法:
void DisplayData(object[] objs, params FieldInfo[] fields)
并且可以这样称呼它
DisplayData(accounts, fieldof(Account.Name), fieldof(Account.Email));
这种想法。
【问题讨论】:
-
一小段代码来说明你的问题将帮助你得到更好的答案
-
听起来您可能正在从多个程序集中提取相同类型的类。如果是这样,您可能需要考虑使用接口并针对该接口进行编译时类型检查。然后您可以将实例变量分配给动态加载的程序集,一切都会好起来的。
-
gbogumil - 只是一个程序集,但在代码中的几个地方我想对不同类的不同字段进行特定操作,因此需要能够指定哪些字段。我添加了一个代码示例,希望可以澄清。
标签: c# .net reflection