Why can't I declare C# methods virtual and static?

c#, oop

Solution

Virtual static methods don't make sense. If I call `HelperClass.HelperMethod();`, why would I expect some random subclass' method to be called? The solution really breaks down when you have 2 subclasses of `HelperClass` - which one would you use?

If you want to have overrideable static-type methods you should probably go with:

- A singleton, if you want the same subclass to be used globally.

- A tradition class hierarchy, with a factory or dependency injection, if you want different behavior in different parts of your application.

Choose whichever solution makes more sense in your situation.

Problem

I have a helper class that is just a bunch of static methods and would like to subclass the helper class. Some behavior is unique depending on the subclass so I would like to call a virtual method from the base class, but since all the methods are static I can't create a plain virtual method (need object reference in order to access virtual method). Is there any way around this? I guess I could use a singleton.. HelperClass.Instance.HelperMethod() isn't so much worse than HelperClass.HelperMethod(). Brownie points for anyone that can point out some languages that support virtual static methods. Edit: OK yeah I'm crazy. Google search results had me thinking I wasn't for a bit there.

Original source

Related problems