对于可怕的标题的道歉,我想不出一个更好的方式来描述它。在抽象基的构造函数中创建新的派生类型
本质上,我有一个抽象基类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