 <p>Use a <code>using</code> block instead.</p> <pre><code>using (var c = new Connection()) using (var u = new UsesConnection(c)) { // Do your work here } </code></pre> <p>But don't <code>return</code> as that will dispose both objects. Don't let <code>UsesConnection</code> to dispose <code>Connection</code>.</p> <p>You should be in charge of maintaining the life-cycles of your disposable references, not some caller - ask yourself "what if they never dispose of my object?"</p>