Сериализация объекта потока памяти в строку - PullRequest
12 голосов
/ 28 мая 2011

Сейчас я использую XmlTextWriter для преобразования объекта MemoryStream в строку. Но я не хочу знать, существует ли более быстрый способ сериализации потока памяти в строку.

Я следую приведенному здесь коду для сериализации - http://www.eggheadcafe.com/articles/system.xml.xmlserialization.asp

Отредактировано

Поток в строку

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

Строка в поток

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

Ответы [ 2 ]

26 голосов
/ 28 мая 2011
using(MemoryStream stream = new MemoryStream()) {
   stream.Position = 0;
   var sr = new StreamReader(stream);
   string myStr = sr.ReadToEnd();
}

Вы не можете использовать GetBuffer, когда используете MemoryStream (byte []) конструктор.

MSDN цитата:

Этот конструктор не предоставляет базовый поток.GetBuffer создает UnauthorizedAccessException.

Вы должны использовать этот конструктор и установить publiclyVisible = true, чтобы использовать GetBuffer

0 голосов
/ 27 февраля 2013

В VB.net я использовал это

Dim TempText = System.Text.Encoding.UTF8.GetString (TempMemoryStream.ToArray ())

в C # может применяться

...