2013-05-17 39 views
-1

我有一个类的集合(约100)(假设Class1,Class2,Class3)。我想动态创建列表并添加到列表中。例如List<abc> test1 = new List<abc>(); abc可能是Class1/Class2/ClassN.How to do it?如何动态创建类实例

+0

@FeistyMango它们是完全不相关的类,在我的代码已经定义,取决于我想创建列表 – RobinAtTech

+0

的条件是什么条件决定你要在运行时加载的对象?我问,因为很容易告诉你如何在运行时使用反射来加载对象......我想知道是否有更好的设计方法可以根据你真正想要完成的内容来推荐。 –

+0

@FeistyMango正是。其实它是一个Ms Access数据库。我将检查该数据库中是否存在表。如果表存在,我将创建一个带有相应表类的列表,并将对象添加到该列表中 – RobinAtTech

回答

2

正如我在我的评论中提到的,使用反射可以以非常简单的方式完成。

public List<object> LoadObjectsFromAssembly(Assembly assemblyContainingClasses) 
{ 
    var objectList = new List<object>(); 
    List<Type> classNames = assemblyContainingClasses.GetTypes().Where(t => t.IsClass && !t.IsAbstract).ToList(); 

    foreach(var classType in classNames) 
    { 
     Type typeToLoad = assemblyContainingClasses.GetType(classType.FullName); 
     objectList.Add(Activator.CreateInstance(typeToLoad)); 
    } 
    return objectList; 
}