我會說,與泛型應該很少有永遠是創建自定義集合類型的原因。但是如果你肯定會說ProductCollection
最適合框架的命名約定。
仍然可以考慮使用List<Product>
或Collection<Product>
或更好的或ICollection<Product>
。
編輯:這是迴應MrEdmundo的評論如下。
就你而言,你有兩種選擇。最明顯的選擇是使用繼承這樣的:
class Ball { }
class BallCollection : List<Ball>
{
public String Color { get; set; }
public String Material { get; set; }
}
我說,很明顯,因爲它似乎像乍一看最好的想法,但之後有點想它變得清晰,這是不是最好的選擇。如果您或Microsoft創建了新的SuperAwesomeList<T>
,並且您想要使用它來改善BallCollection
類的性能,該怎麼辦?這將是困難的,因爲你通過繼承綁定到List<T>
類,並且更改基類可能會破壞使用BallCollection
作爲List<T>
的任何代碼。
那麼更好的解決方案是什麼?我會建議,在這種情況下,你最好是支持組合而不是繼承。那麼基於合成的解決方案會是什麼樣子呢?我已經宣佈Balls
財產
class Ball { }
class BallCollection
{
public String Color { get; set; }
public String Material { get; set; }
public IList<Ball> Balls { get; set; }
}
另行通知IList<T>
類型。這意味着只要該類型實現了IList<T>
,您就可以自由地使用任何類型的屬性來實現該屬性。這意味着您可以在任何地點免費使用SuperAwesomeList<T>
,這使得這種類型的可擴展性更高,維護的難度也更小。
+1:完全同意以上所有。如果您必須這樣做,請將其命名爲XxxCollection。但是,如果你能避免它,不要這樣做。 – 2009-07-14 15:43:15
+1使用內置集合類型。 – 2009-07-14 15:44:07