Prior to C# generics, everyone would code collections for their business objects by creating a collection base that implemented IEnumerable
IE:
publi
Use the type List where you have to declare a list of them. However,
where you return a list of BusinessObject, consider returning IEnumerable, IList or ReadOnlyCollection - i.e. return the weakest possible contract that satisfies the client.
Where you want to "add custom code" to a list, code extension methods on the list type. Again, attach these methods to the weakest possible contract, e.g.
public static int SomeCount(this IEnumerable someList)
Of course, you can't and shouldn't add state with extension methods, so if you need to add a new property and a field behind it, use a subclass or better, a wrapper class to store this.