【发布时间】:2013-07-11 22:07:07
【问题描述】:
我有一个需要向其中传递各种列表的 C# 方法。列表的类型经常会有所不同。方法本身在不同的 dll 中,无法知道列表中包含的类对象(没有引用,没有 using 语句)。该方法需要读取列表中每个项目的每个成员,并在此基础上构建并返回一个字符串。
我的问题是如何在编译时/运行时获取这些不同对象的元数据?反射会这样做吗?
另外,一旦我得到元数据,我如何使用它来实际使用变量?
谢谢
编辑:目前我正在使用它,如下所示:
public string GetData(List<User> list){
//...
List<RowData> rows = new List<RowData>();
foreach (User item in list)
{
RowData row = new RowData();
row.id = count++;
row.cell = new string[3];
row.cell[0] = item.ID.ToString();
row.cell[1] = item.name;
row.cell[2] = item.age.ToString();
rows.Add(row);
}
//...
return new JavaScriptSerializer().Serialize(rows.ToArray());
现在这是非常具体的。我想用泛型替换它,这样我就可以传递“用户”以外的项目
【问题讨论】:
-
反射是你想要的,是的。有关一些好的介绍性链接,请参阅此答案:stackoverflow.com/questions/9428779/…
-
或许也可以考虑使用
dynamic,以避免直接通过反射跳过箍。 -
我已经更新了这个问题,详细说明了使用情况
-
@Mike 再次检查我的答案
标签: c# list reflection