As per the C# design guidelines, public methods should not be virtual. Instead define a public (non- virtual) method that in turn calls a protected virtual/abstract