In VS2003, since we don't have generics, we have lots of strongly-typed collections.
For example, there's the LinkCollection class, which holds objects of type Link.
Now that we have generics, we could replace such collections with:
(well, actually, we couldn't replace them, as that would break existing code, but
we could do that for new collections). That seems like a simple solution, but it isn't
optimal, for a couple of reasons:
Sometimes the type in the collection isn't sufficiently distinctive, especially if
it's a built-in type. You'd like to see something like EmployeeIDCollection rather
It's often useful to add additional functionality to the collection beyond what you
get from the built-in collection class.
The better solution is to define your own collection class. Nicely, you can base it
off of the collection class:
class EmployeeIDCollection: List<int>
The design guideline is not to expose collection classes, but rather to expose custom
collection classes (I really need a better name for those) instead.