私は次のような継承ツリーを持っています:
BaseType
TypeA : BaseType
TypeB : BaseType
TypeC : BaseType
各派生オブジェクトには、objectName
そのオブジェクトの名前を定義する名前付き変数があります。
BaseType
また、オブジェクトと から派生したオブジェクトを保持する配列とリストもありますBaseType
。配列には、作成時にオブジェクトが格納されていますが、リストは将来の使用のために空です。
BaseType[] arrayA = new BaseType[] { new TypeA(), new TypeB(), new TypeC(), }
List<BaseType> listA = new List<BaseType>;
配列内のオブジェクトをリストに追加するために使用するメソッドもあります。
public void AddToList(BaseType itemToAdd)
{
if(itemToAdd.objectName == "Type A")
{
listA.Add(new TypeA());
}
else if(itemToAdd.objectName == "Type B")
{
listA.Add(new TypeB());
}
else if(itemToAdd.objectName == "Type C")
{
listA.Add(new TypeA());
}
}
if
これらのコマンドをすべて使用する必要がないようにするにはどうすればよいですか? ある時点で私は試しました:
public void AddToList(BaseType itemToAdd)
{
listA.Add( new itemToAdd());
}
うまくいきませんでした。では、どうすればこのようなことを行うことができますか? if
オブジェクトは常に成長しており、追加する派生オブジェクトごとに forを配置する必要はありません。また、これがソリューションに関係するかどうかはわかりませんが、フォルダーを使用して .cs ファイルを整理しています。したがって、「Types」という名前のフォルダーにすべての派生クラスがあるため、そのオブジェクトの新しいインスタンスを作成するには、次のように入力する必要があります。
listA.Add(new Types.TypeA());