C#确定通用列表的类型

Mik*_*ike 2 c# reflection list

我有一个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());
Run Code Online (Sandbox Code Playgroud)

现在,这是非常具体的。我想将其替换为泛型,这样我就可以传递“用户”以外的项目

Kar*_*son 5

如果参数(list出于讨论目的将其调用)进入该方法,List<T>则可以执行以下操作:

Type type = list.GetType().GetGenericArguments()[0];
Run Code Online (Sandbox Code Playgroud)

如果您只有泛型T类,则可以始终使用以下类:

Type typeParameterType = typeof(T);
Run Code Online (Sandbox Code Playgroud)