2013-05-17 168 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; 
}