title: The best way to assert pre-condition and post-condition of arguments and values in .NET?
body: <p>I have been thinking about design by contract lately and I was wondering what people think is the best way to assert pre-condition and post-condition of values in .NET?
  i.e. validating argument values to a method.</p>
  
  <p>Some people recommend Debug.Assert while others talk about using an if statement plus throwing an exception. What are the pros and cons of each?</p>
  
  <p>What frameworks are available that you recommend?</p>