.NETランタイムのすべての型はオブジェクトから継承するため、オブジェクトに変換する必要はありません。
リストのメンバーをForm1.AnimalTypes
コンボボックスに割り当てる場合は、それらをItems
コレクションに追加してから、DisplayMember
表示するValueMember
プロパティの名前とバインドするプロパティの名前を設定する必要があります。
comboBox.Items.AddRange(Form1.AnimalTypes);
comboBox.DisplayMember = "AnimalTypeName";
comboBox.ValueMember = "AnimalTypeId";
変換だけが必要で、コンボボックスへの割り当てが重要でない場合は、次の操作を実行できます。
object[] myArray = Form1.AnimalTypes.ToArray();
コンバータークラスは、オブジェクトの継承によって定義されていない変換に必要です。つまり、リンゴをオレンジに変換する場合はコンバーターを使用し、アペルまたはオレンジをフルーツに変換する場合はキャストを使用します。C#3.0では、次のスニペットを使用して完全なコレクションをキャストできます。
var newColOfBaseType = myList.Cast<BaseType>();
Linqを使用すると、コレクションから特定の種類のエントリをフィルター処理して、その特定の種類のコレクションを抽出することもできます。
var oranges = fruit.OfType<Orange>().Cast<Orange>();
Linqを使用Select
すると、変換を実行することもできます。
var oranges = apples.Select(new Orange() { /* ... and initializers here ...*/});