title: What controls where an event can be called?
body: <p>Say I have a class like this:</p>
  
  <pre><code>public class FauxIdentityForm
  {
      public Guid FormID { get; set; }
      public event EventHandler Closed;
      public void TheObjectWasClosed(EventArgs e)
      {
          Closed(this, e);
      }
  }
  </code></pre>
  
  <p>It is fine for me to call the Closed Event inside the <code>TheObjectWasClosed</code> method.  But if, in a different class (even in the same file), I have a method like this:</p>
  
  <pre><code>public void CallTheEvent()
  {
      FauxIdentityForm _formIdentity = new FauxIdentityForm {FormID = Guid.NewGuid()};
  
      _formIdentity.Closed(_formIdentity, null);  // &lt;-- Does not compile!
  }
  </code></pre>
  
  <p>The call to Closed is shot down by the compiler (it wants me to only use += and -=).</p>
  
  <p>So, is actually calling the event only allowed inside the class?  Is that the limitation?  </p>
  
  <p>If so, is there anyway around it?  And if not, why did the creators of C# do this?  (It makes working with events very hard sometimes.  I imagine there is a good reason and it is probably saving me from myself, but I would like to know it.)</p>