title: Behaviour to simulate an enum implementing an interface
body: <p>Say I have an enum something like:</p>
  
  <pre><code>enum OrderStatus
  {
      AwaitingAuthorization,
      InProduction,
      AwaitingDespatch
  }
  </code></pre>
  
  <p>I've also created an extension method on my enum to tidy up the displayed values in the UI, so I have something like:</p>
  
  <pre><code>public static string ToDisplayString(this OrderStatus status)
  {
      switch (status)
      {
          case Status.AwaitingAuthorization:
              return "Awaiting Authorization";
  
          case Status.InProduction:
              return "Item in Production";
  
          ... etc
      }
  }
  </code></pre>
  
  <p>Inspired by the excellent post <a href="https://stackoverflow.com/questions/388483/how-do-you-create-a-dropdownlist-from-an-enum-in-asp-net-mvc">here</a>, I want to bind my enums to a <code>SelectList</code> with an extension method:</p>
  
  <p><code>public static SelectList ToSelectList&lt;TEnum&gt;(this TEnum enumObj)</code></p>
  
  <p>however, to use the DisplayString values in the UI drop down I'd need to add a constraint along the lines of</p>
  
  <p><code>: where TEnum has extension ToDisplayString</code></p>
  
  <p>Obviously none of this is going to work at all with the current approach, unless there's some clever trick I don't know about. </p>
  
  <p>Does anyone have any ideas about how I might be able to implement something like this?</p>