在Java中,我可以得到一个类列表:
List<Class>
但是如何在C#中执行此操作?
答案 0 :(得分:8)
如果您指的是实际类的列表,而不是类的实例,那么您可以使用Type
代替Class
。像这样:
List<Type> types = new List<Type>();
types.Add(SomeClass.GetType());
types.Add(SomeOtherClass.GetType());
要实际实例化给定类Type
的类,您可以使用Activator
或反射。有关相关信息,请参阅this post。但是当编译器不知道构造函数/参数等时,它会变得有点复杂。
// Create an instance of types[0] using the default constructor
object newObject = Activator.CreateInstance(types[0]);
或者
// Get all public constructors for types[0]
var ctors = types[0].GetConstructors(BindingFlags.Public);
// Create a class of types[0] using the first constructor
var object = ctors[0].Invoke(new object[] { });
答案 1 :(得分:1)
相同的基本语法适用于C#:
List<YourClass> list = new List<YourClass>();
这要求您在文件顶部using System.Collections.Generic;
,namespace which provides most of the generic collections。
如果您尝试存储类型列表,可以使用List<System.Type>
。然后可以根据需要通过Activator.CreateInstance(接受类型)构建这些类型的实例。
答案 2 :(得分:0)
// Create the list
List<ClassName> classList = new List<ClassName>();
// Create instance of your object
ClassName cn = new ClassName();
// Add the object to the list
classList.Add(cn);