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.