sealed virtual method c#