title: Should I treat objects from a "dumb" managed wrapper over a native COM dll as unmanaged resources?
body: <p>My managed application consumes legacy functionality exposed by a native COM dll via a managed wrapper. I cannot change the COM dll nor its managed wrapper.</p>
  
  <ul>
  <li>The managed wrapper is in essence automatically generated by a script, given the COM type declarations as input.</li>
  <li>The COM layer will internally access network, file system, graphics and other unmanaged resources.</li>
  <li>Most managed types in the wrapper are created using factory-like methods.</li>
  <li>Most managed types in the wrapper has no way of manually trigger clean-up or resource-release.</li>
  <li>No managed type in the wrapper implements IDisposable.</li>
  <li>No managed type in the wrapper explicitly implements a finalizer.</li>
  </ul>
  
  <p>I feel that I'm missing a lot in my application layer from this API that I'd like to see in order to ensure that unmanaged resources are properly being released.</p>
  
  <p><strong>The question is if I'm right in my understanding of this:</strong></p>
  
  <blockquote>
    <p>Given that the application layer no longer references an object from the managed wrapper, there's no way that underlying native objects used by that managed object can ever be released <strong>until an exposed cleanup method explicitly does so</strong>.</p>
  </blockquote>
  
  <p>Am I correct in that?</p>