ひどいタイトルに対する謝罪、私はそれをフレーズするより良い方法を考えることができませんでした。抽象基底のコンストラクタで新しい派生型を作成する
私は基本的に抽象基本クラスCategory
を持っており、それから継承した派生クラスのホスト全体があります。線に沿って何かをすることが可能です:
myCategoryTypeString
は常に派生クラスのいずれかの名前で、それは代わりにその派生クラスの新しいオブジェクトを作成する必要があります
List<Category> catList = new List<Category>();
catList.Add(new Category(myCategoryTypeString));
(おそらく上のスイッチを使用してどのクラスを使用するかを決定する文字列)。
の線に沿って何かようにするには:
catList.Add(new Category("Engineering"));
リストにEngineering : Category
型の新しいオブジェクトを追加しますか?
これが可能であれば、これをどうやって行うのですか?私の抽象クラスが定義されてthusly:
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