title: How do you force constructor signatures and static methods?
body: <p><strong>Is there a way of forcing a (child) class to have constructors with particular signatures or particular static methods in C# or Java?</strong></p>
  
  <p>You can't obviously use interfaces for this, and I know that it will have a limited usage. One instance in which I do find it useful is when you want to enforce some design guideline, for example:</p>
  
  <p><strong>Exceptions</strong><br>
  They should all have the four canonical constructors, but there is no way to enforce it. You have to rely on a tool like FxCop (C# case) to catch these.</p>
  
  <p><strong>Operators</strong><br>
  There is no contract that specifies that two classes can be summed (with operator+ in C#)</p>
  
  <p>Is there any design pattern to work around this limitation?
  What construct could be added to the <em>language</em> to overcome this limitation in future versions of C# or Java?</p>