How can I clone MemoryStream object?

c#, memorystream, stream, xmlreader

Solution

I have solved my problem! :) The things which were missing are marked with `//*`. Here is the code as it should be:

var xmlReaderSettings = new XmlReaderSettings();

stream.Position = 0;//*
xmlReaderSettings.IgnoreWhitespace = true;
using (var newMemoryStream = new MemoryStream())
{
    stream.CopyTo(newMemoryStream);
    newMemoryStream.Position = 0;  //*
    using (var newReader = XmlReader.Create(newMemoryStream, xmlReaderSettings))
    {
        newReader.MoveToContent(); //*

        Doing some stuff...
    }
}

Problem

I have a `MemoryStream` object which is passed by `Stream` type parameter (`Stream` is abstract class in C#). I want to clone it to create another separate `MemoryStream` object with current position of the original and to create also a new `XMLReader` out of it, so I will be able to read its content. This is what I did, and it's not working (debugging the line marked with //* -> `newReader` has got `{None}` value) Assumption: you are inside a method and have `Stream currentStream` reference. ``` var x = new XmlReaderSettings(); x.IgnoreWhitespace = true; using (var newMemoryStream = new MemoryStream()) { stream.CopyTo(newMemoryStream); using (var newReader = XmlReader.Create(newMemoryStream,x)) //* { Doing some stuff... } } ```

Original source