title: Where to unsubscribe from events?
body: <p>E.g. for a general type, which subscribe to some events in constructor:</p>
  
  <pre><code>class SomeType
  {
      public SomeType(...)
      {
          someEvent1 += ...
          someEvent2 += ...
      }
  }
  </code></pre>
  
  <p>Where do I unsubscribe from events?</p>
  
  <ul>
  <li>Finalizer?</li>
  <li><code>IDisposable</code> ?</li>
  <li>Some method <code>DontForgetToCallMeSoICanUnsubscribeFromEvents()</code>?</li>
  <li>Use weak events pattern?</li>
  </ul>
  
  <p>I know it <em>depends</em>. In case of controls (wpf, winforms) there are some events what can be used to subscribe/unsubscribe like <code>Loaded</code>/<code>Unloaded</code>, <code>HandleCreated</code>/<code>HandleDestroyed</code>, etc. But what if parent is a simple <code>object</code>?</p>
  
  <p>And some more specific example: nested ViewModels, where each level is a <code>List&lt;NextLevelVM&gt;</code>, at any level ViewModel can be deleted, does that means what each ViewModel must implement <code>IDisposable</code> (if e.g. it is the right way) where it call <code>Dispose</code> for each item in their list? I tried to use weak events, but that <a href="https://stackoverflow.com/q/36766770/1997232">doesn't go well</a>.</p>