Search code examples
c#xml-serializationmemorystream

Serializing a memorystream object to string


Right now I'm using XmlTextWriter to convert a MemoryStream object into string. But I wan't to know whether there is a faster method to serialize a memorystream to string.

I follow the code given here for serialization - http://www.eggheadcafe.com/articles/system.xml.xmlserialization.asp

Edited

Stream to String

ms.Position = 0;
using (StreamReader sr = new StreamReader(ms))
{
    string content = sr.ReadToEnd();
    SaveInDB(ms);
}

String to Stream

string content = GetFromContentDB();
byte[] byteArray = Encoding.ASCII.GetBytes(content);
MemoryStream ms = new MemoryStream(byteArray); 
byte[] outBuf = ms.GetBuffer(); //error here

Solution

  • using(MemoryStream stream = new MemoryStream()) {
       stream.Position = 0;
       var sr = new StreamReader(stream);
       string myStr = sr.ReadToEnd();
    }
    

    You cant use GetBuffer when you use MemoryStream(byte[]) constructor.

    MSDN quote:

    This constructor does not expose the underlying stream. GetBuffer throws UnauthorizedAccessException.

    You must use this constructor and set publiclyVisible = true in order to use GetBuffer