By using the new
keyword, you aren't overriding the base class' methods; instead, you're creating brand new methods in the derived class only, which are never called.
Instead, you should override the AddNewCore()
method and return a new object.
EDIT: You also need to Add()
the new instance to the collection in your override.