title: Exposing a .NET class (which has events) to COM
body: <p>I want to expose a .NET class to COM.
  That's fairly easy:</p>
  
  <ul>
  <li>I create an interface in where I define the members of that class that should be ComVisible</li>
  <li>I define the DispId's of those members myself</li>
  <li>I define that the interface should be <code>ComVisible</code></li>
  <li>I assign a <code>Guid</code> to that interface</li>
  <li>I create a class which implements that interface</li>
  </ul>
  
  <p>No big deal.  This all works.
  But, now my question is: I have a few events in that class, that I want to expose to COM as well.<br>
  This should be no big deal either, but, when I look at some examples (f.i. code generated by MS' ComInterop tool), I see that the events are declared in a separate interface.
  That is: the class that should be <code>ComVisible</code>, implements 2 interfaces:</p>
  
  <ul>
  <li>one interface which defines the regular methods and properties that should be <code>ComVisible</code></li>
  <li>another interface that defines the events that should be <code>ComVisible</code>.</li>
  </ul>
  
  <p>Now, my question is: why is that ?  What is the reason for this ? </p>
  
  <p>Why are the <code>ComVisible</code> events defined in another interface, and why are they just not defined in the interface that contains the methods and properties that should be <code>ComVisible</code>?</p>
  
  <p>What is the reasoning behind this ?</p>