如何防止 Newtonsoft JsonSerializer 关闭流?

dit*_*lav 2 c# stream streamwriter jsonserializer json.net

所以我还没有编写我现在正在处理的代码,我正在寻找如何最好地处理这个问题。

现在我有这个。

public static void WriteSymbol(Stream stream, Symbol symbol)
{
    using (var streamWriter = new StreamWriter(stream))
    {
        JsonSerializer.Create(SerializerSettings).Serialize(streamWriter, symbol);                
    }
}
Run Code Online (Sandbox Code Playgroud)

在我的测试中完成此操作后,我希望能够读取流的内容,以便我可以检查集成。问题是现在在 Serialize 流关闭后我无法再读取它。

我看到了 JsonWriter,public bool CloseOutput { get; set; }但我没有看到这个静态 JsonSerializer 的内容。

解决这个问题的最佳方法是什么?如何防止序列化程序关闭流?有什么方法可以检查流的内容吗?

NtF*_*reX 5

从.NET 4.5向上可以使用LeaveOpen的构造函数参数StreamWriter

使用的默认缓冲区大小StreamWriter为 1024,在反编译类型时可见。

因此,您可以执行以下操作。

using (var streamWriter = new StreamWriter(stream, Encoding.UTF8, 1024, true))
{
    // TODO: do something 
}
Run Code Online (Sandbox Code Playgroud)