沒有必要轉換以.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 ...*/});
嗯然後我真的很想念Converter類的點。這和寫簡單的轉換方法有什麼區別? – Petr 2010-03-22 08:17:02
使用轉換器將爲您「執行列表中的每個項目」位 - 爲您提供委託,並將其應用於列表中的每個項目(使用ConvertAll)。這也允許您將轉換邏輯與代碼的其餘部分分開 - 您可以使用工廠類或類似的東西來根據某些變量選擇合適的Converter。 – 2010-03-22 08:21:28