如何在运行时C#动态地将类名传递给List

时间:2015-10-09 12:15:43

标签: c# .net list generics

我需要将类名称动态传递给函数中的List,但是我收到如下错误。

 public void  updateList <T>( T clazz, string classData)
 {                      

     if (string.IsNullOrEmpty(json_response) == false)
     {
         List<clazz> list_of_measurements_Original = JsonConvert.DeserializeObject<List<clazz>>(json_response);
     } // Getting error for ClassType in List
 }
  

错误CS0246:类型或命名空间名称&#39; clazz&#39;找不到(你错过了使用指令或汇编引用吗?)

我有许多类,我希望通过传递类名或枚举来通过相同的通用函数动态更新。 我还使用动态关键字作为函数参数但没有结果。 请帮帮我。

2 个答案:

答案 0 :(得分:2)

&#39; clazz所&#39;是编译器搜索类型时的参数。您不需要将类型作为参数传递,这是泛型的用途。试试这个:

    public void  updateList <T>(string classData)
    {

         List<T> objlist = new List<T>(); 
    }

答案 1 :(得分:1)

更改

List<clazz> objlist = new List<clazz>();

List<T> objlist = new List<T>();

此处T是一个类型参数,它是特定类型的占位符。编译器将T更改为您传递的任何类型。您不能将变量(clazz)作为泛型类的类型参数传递。