title: Disposing of Objects with long living dependencies
body: <pre><code>public class ABC
  {
      public ABC(IEventableInstance dependency)
      {
          dependency.ANewEvent += MyEventHandler;
      }
  
      private void MyEventHandler(object sender, EventArgs e)
      {
          //Do Stuff
      }
  }
  </code></pre>
  
  <p>Let us say that an instance of ABC is a long living object and that my dependency is an even longer running object.  When an instance of ABC needs to be cleaned up, I have two options.  </p>
  
  <p>One I could have a Cleanup() method to unsubscribe from the ANewEvent event or I could implement IDisposable and in the Dispose unwire the event.  Now I have no control over whether the consumer will call the dispose method or even the Cleanup method should I go that route. </p>
  
  <p>Should I implement a Finaliser and unsubscribe then?  It feels dirty but I do not want hanging instances of ABC around.</p>
  
  <p>Thoughts?</p>