Where is your override keyword? To realize Polymorphism, you have to implement 3 conditions:
1. Contains inheritance.(Interface or base class)
2. Contains override(use abstract/override or virtual/override or realize the interface method)
3. Mutiple base class objects which point to a derived class reference.
You should use override keyword in your derived class to replace the behavior of base class. Otherwise you should use new keyword to prevent derived class to replace the method of base class.