C#利用反射实例化List(未知类名的情况下)

时间:2022-01-27 07:11:44
class Staff
{
    .....;
}

class Main()
{
    void Run()
    {
        List<Staff> staffs = new List<Staff>();
    }
}

问题:如果不知道Staff类的类名 只有一个string(值为"Staff") 如何像下面那样实例化List<>

List<Staff> staffs = new List<Staff>();

(我只知道如何利用反射实例化Staff 但是不知道如何实例化List<Staff>)

先谢谢大家了!
C#利用反射实例化List(未知类名的情况下)

2 个解决方案

#1


var d1 = typeof(List<>);
Type[] typeArgs = { Type.GetType("Namespace.Staff") };
var makeme = d1.MakeGenericType(typeArgs);
object o = Activator.CreateInstance(makeme);
  
*****************************************************************************
签名档: http://feiyun0112.cnblogs.com/

#2


引用 1 楼 feiyun0112 的回复:
var d1 = typeof(List<>);
Type[] typeArgs = { Type.GetType("Namespace.Staff") };
var makeme = d1.MakeGenericType(typeArgs);
object o = Activator.CreateInstance(makeme);
  
*****************************************************************************
签名档: http://feiyun0112.cnblogs.com/


该如何使用List的Add方法? 因为当前的list为object类型

#1


var d1 = typeof(List<>);
Type[] typeArgs = { Type.GetType("Namespace.Staff") };
var makeme = d1.MakeGenericType(typeArgs);
object o = Activator.CreateInstance(makeme);
  
*****************************************************************************
签名档: http://feiyun0112.cnblogs.com/

#2


引用 1 楼 feiyun0112 的回复:
var d1 = typeof(List<>);
Type[] typeArgs = { Type.GetType("Namespace.Staff") };
var makeme = d1.MakeGenericType(typeArgs);
object o = Activator.CreateInstance(makeme);
  
*****************************************************************************
签名档: http://feiyun0112.cnblogs.com/


该如何使用List的Add方法? 因为当前的list为object类型