Prior to C# generics, everyone would code collections for their business objects by creating a collection base that implemented IEnumerable
IE:
publi
I generally only derive my own collection classes if I need to "add value". Like, if the collection itself needed to have some "metadata" properties tagging along with it.