title: Enum.HasFlag, why no Enum.SetFlag?
body: <p>I have to build an extension method for each flag type I declare, like so:</p>
  
  <pre><code>public static EventMessageScope SetFlag(this EventMessageScope flags, 
      EventMessageScope flag, bool value)
  {
      if (value)
          flags |= flag;
      else
          flags &amp;= ~flag;
  
      return flags;
  }
  </code></pre>
  
  <p>Why isn't there an <code>Enum.SetFlag</code> like there is an <code>Enum.HasFlag</code>?</p>
  
  <p>Also, why does this not work always?</p>
  
  <pre><code>public static bool Get(this EventMessageScope flags, EventMessageScope flag)
  {
      return ((flags &amp; flag) != 0);
  }
  </code></pre>
  
  <p>For example, if I have:</p>
  
  <pre><code>var flag = EventMessageScope.Private;
  </code></pre>
  
  <p>And check it like:</p>
  
  <pre><code>if(flag.Get(EventMessageScope.Public))
  </code></pre>
  
  <p>Where <code>EventMessageScope.Public</code> really is <code>EventMessageScope.Private | EventMessageScope.PublicOnly</code>, it returns true. </p>
  
  <p>When it's not, because <code>Private</code> is not public, it's just half public.</p>
  
  <p>The same goes for:</p>
  
  <p><code>if(flag.Get(EventMessageScope.None))</code></p>
  
  <p>Which returns <code>false</code>, except the scope is actually <code>None</code> (<code>0x0</code>), when it should always return true?</p>