title: How to go about an 'overridable' method in an interface driven plugin
body: <p>I have an app that accepts plugins using a shared library full of interface classes, but would also like to define some static methods to interact with them that can be overridden by the plugin. I understand the limitations in C# that preclude me from just defining the 'override-able' virtual method as static, but need to know what approach to take nonetheless.</p>
  
  <p>And before anybody marks this as duplicates of 'Declare virtual inside static' questions, I have read all that I can find and none show a workaround for achieving the same results especially considering that I am using interfaces.</p>
  
  <pre><code>public interface IMyClass
  {
      int MyNum {get;}
  }
  public static class Extensions
  {
      public static int NewMyNum(this IMyClass class)
      {
          return class.MyNum * 2;
      }
  }
  public class FirstClass : IMyClass
  {
      int MyNum {get {return 5;}}
  }
  public class AnotherClass : IMyClass
  {
      int MyNum {get {return 5;}}
      public override NewMyNum(this IMyClass class)
      {
          return class.MyNum * 3;
      }
  }
  
  public class Main()
  {
      IMyClass AClassObj = new IMyClass();
      console.writeLine(AClassObj.NewMyNum());
      IMyClass BClassObj = new IMyClass();
      console.writeLine(BClassObj.NewMyNum());
  }
  </code></pre>
  
  <p>I know this is nowhere near compile-able code, but I hope it illustrates what I am trying to achieve without me posting hundreds of line of code.</p>