Чтение из потока памяти в строку

Я пытаюсь записать объект в строку Xml, взять эту строку и сохранить ее в БД. Но сначала мне нужно получить строку...

    private static readonly Encoding LocalEncoding = Encoding.UTF8;

    public static string SaveToString<T> (T settings)
    {
        Stream stream = null;
        TextWriter writer = null;
        string settingsString = null;

        try
        {
            stream = new MemoryStream();

            var serializer = new XmlSerializer(typeof(T));

            writer = new StreamWriter(stream, LocalEncoding);

            serializer.Serialize(writer, settings);

            var buffer = new byte[stream.Length];

            stream.Read(buffer, 0, (int)stream.Length);

            settingsString = LocalEncoding.GetString(buffer);
        }
        catch(Exception ex)
        {
            // If the action cancels we don't want to throw, just return null.
        }
        finally
        {
            if (stream != null)
                stream.Close();

            if(writer != null)
                writer.Close();
        }

        return settingsString;
    }

Кажется, это работает, поток заполняется байтами. Но когда я прихожу, чтобы прочитать его обратно в буфер, а затем в строку... буфер заполняется '0'! Не уверен, что я делаю неправильно здесь, ребята.

38
задан tigerswithguitars 4 May 2012 в 09:28
поделиться