title: C# class design - what can I use instead of "static abstract"?
body: <p>I want to do the following</p>
  
  <pre><code>public abstract class MyAbstractClass
  {
      public static abstract int MagicId
      {
          get;
      }
  
      public static void DoSomeMagic()
      {
          // Need to get the MagicId value defined in the concrete implementation
      }
  }
  
  public class MyConcreteClass : MyAbstractClass
  {
      public static override int MagicId
      {
          get { return 123; }
      }
  }
  </code></pre>
  
  <p>However I can't because you <a href="https://stackoverflow.com/questions/3284/why-cant-i-have-abstract-static-methods-in-c">can't have static abstract members</a>.</p>
  
  <p>I understand why I can't do this - any recommendations for a design that will achieve much the same result?</p>
  
  <p><em>(For clarity - I am trying to provide a library with an abstract base class but the concrete versions MUST implement a few properties/methods themselves and yes, there are good reasons for keeping it static.)</em></p>