對於可怕的標題的道歉,我想不出一個更好的方式來描述它。在抽象基的構造函數中創建新的派生類型
本質上,我有一個抽象基類Category
和從中繼承的派生類的整個主機。是否有可能做線沿線的東西:
List<Category> catList = new List<Category>();
catList.Add(new Category(myCategoryTypeString));
凡myCategoryTypeString
將永遠是一個派生類的名稱,有它,而不是創建一個派生類的新對象(可能使用的開關字符串來確定使用哪個類)。
這樣的東西沿着線:
catList.Add(new Category("Engineering"));
將增加Engineering : Category
類型的新對象添加到列表?
如果這是可能的,人們會怎麼做呢?我的抽象類定義正是如此:
abstract class Category
{
private string line;
private bool ToChallenge;
private string[] columns;
private int oppLevel;
protected Category(string line)
{
this.line = line;
columns = line.Split(',');
}
public abstract bool IsAnomoly();
public abstract void CategoriseAnomoly();
public abstract void WriteLine();
}
它*是*可能的,但你的方法是代表氣味的指示。您確定要在這裏使用後期綁定方法嗎?你失去了編譯時檢查的好處,並且你會留下錯誤。 –
如果我誠實的話,這不是完全必要的,我只是想知道它是否可能比任何東西都更有可能 –
這不應該如此快速地結束。我很肯定,有一種與泛型相關的解決方案,與「將字符串轉換爲類名」無關。 – Udontknow