The Generic Operator pattern (GO pattern, for short) works around two limitations in C#:
- The lack of static interface methods
- The lack of virtual static methods (eg. static methods that can be inherited and overridden)
The first one is pretty easy to demonstrate:
public interface IDoThings