For a method or properties to be overridable, it must has a virtual property in its base class set as true as well, is final must be set as true. To determine whether a method is overridable, it is not sufficient to check that IsVirtual is true.
For a method to be overridable, IsVirtual must be true and IsFinal must be false.
For example, a method that is non-virtual might implement an interface method. The common language runtime requires all methods that implement interface members to be marked as virtual; therefore, the compiler marks the method virtual final. Thus there are cases where a method that is marked as virtual is not overridable.
If you think this post is useful, please recommend me at the bottom of the page. ;)