0
考慮下面的代碼:如何從參數數組中實例化一個特定的子類型?
public abstract class BaseClass {
abstract void DoWork();
virtual void MoreWork() {
Console.WriteLine("MoreWork");
}
}
public class classA : BaseClass {
public void DoWork() { DoStuffA(); }
}
public class classB : BaseClass {
public void DoWork() { DoStuffB(); }
}
我想有一個方法,我想通過所有這些類型的,並讓他們進行實例化到。
void Initialize(params BaseClass[] lst) {
for (int i = 0; i < objectList.Length; i++) {
Activator.CreateInstance(objectList[i]); // not sure if this works.
}
}
Initialize(classA, classB);
我該如何解決這個問題?
不能使用'classA'和'classB'作爲值;他們是類型。您可以使用'Initialize();'作爲泛型方法,但不能爲類型參數創建類似於「'params'」的東西。或者你可以使用'Initialize(typeof(classA),typeof(classB));'在答案中。除此之外,代碼中的很多事情都不會編譯,例如虛擬方法(包括抽象方法)不能是私有的,它們的覆蓋必須聲明相同的訪問級別並使用「override」關鍵字。 –