如何在运行时动态地将类名传递给列表

本文关键字:列表 运行时 动态 | 更新日期: 2023-09-27 18:16:51

我需要将类名动态地传递给函数中的列表,但我得到的错误如下..

 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:类型或命名空间名称"blazz"无法找到(您是否缺少using指令或程序集引用?)

我有许多类,我想通过传递类名或enum通过相同的泛型函数动态更新。我还使用了动态关键字作为函数参数,但没有结果。

如何在运行时动态地将类名传递给列表

"clazz"是一个参数,编译器搜索类型。您不需要将类型作为参数传递,这就是泛型的作用。试试这个:

    public void  updateList <T>(string classData)
    {
         List<T> objlist = new List<T>(); 
    }

变化

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

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

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