title: C#: Argument validation: null/empty strings
body: <p>I don't know how many countless times I've had to write code to validate string arguments:</p>
  
  <pre><code>public RoomName(string name)
  {
      if (string.IsNullOrEmpty(name))
      {
          throw new ArgumentException("Cannot be empty", "name");
      }
  }
  </code></pre>
  
  <p>Is there anyway to avoid this? Is there some attribute or design-by-contract mechanism to avoid this? Is there no way to say:</p>
  
  <pre><code>public RoomName(NotNullOrEmptyString name)
  {
  </code></pre>
  
  <p>without having to actually create that type?</p>