Disposing underlying MemoryStream of an XmlReader returned by a method
<p>I have the following method that returns an <code>XmlReader</code>:</p>

<pre><code>public XmlReader RequestXML(string endpoint)
{
    using (WebClient request = this.PrepareRequest(RestMethod.GET, null))
    {
        byte[] response = request.DownloadData(this.RestUrl + endpoint);
        using (MemoryStream responseStream = new MemoryStream(response))
        {
            XmlReader xReader = XmlReader.Create(responseStream);
            return xReader;
        }
    }
}
</code></pre>

<p>But, of course, this doesn't work because the <code>MemoryStream</code> is closed before the calling code has a chance to use the <code>XmlReader</code>.  Is it possible to return an <code>XmlReader</code> and still dispose its underlying <code>MemoryStream</code>?</p>

<p>I've considered accepting a delegate (or <code>Action&lt;XmlReader&gt;</code>) as the second argument in my method to do the work within the <code>using</code>, but that design seems a bit awkward.</p>

<p>Also, <a href="http://stackoverflow.com/q/6231255/361684">I can't just call <code>WebClient.DownloadString()</code></a>.</p>
