I used a strongly typed collection that derived from the CollectionBase class and now I'd like to change it to inherit from a typesafe generic collection. Some advise to inherit from List<T>, some do advise to use Collection<T>. What I'd like to do is this:
1) I have a custom class and I'm creating a collection that holds only the instances of that custom class.
2) I have some properties and methods that I'd like the custom collection class to have. For example, it should have an Id property, or it should have a IsBlahBlah() method.
How should I proceed with this? When I was deriving from the CollectionBase class, I was using the InnerList property to access the elements. Should I use the Items property if I choose to use Collection<T>?
Is doing something like:
public class MyCustomCollection : Collection<MyCustomClass>
{
public int ExtraProperty { get; set; }
public bool IsFortyTwo(MyCustomClass) { }
}
the right way? Will it work correctly out of the box without interfering with the methods in the Collection<T>?
Extra question: When I search for "Strongly Typed Collection" on Google, it always shows up results containing the CollectionBase class. What is the difference between Strongly Typed Collections and Typesafe Collections?