所以我还没有编写我现在正在处理的代码,而且我正在寻找如何最好地处理这个问题。
现在我有了这个。
public static void WriteSymbol(Stream stream, Symbol symbol)
{
using (var streamWriter = new StreamWriter(stream))
{
JsonSerializer.Create(SerializerSettings).Serialize(streamWriter, symbol);
}
}
我希望能够在我的测试中完成后阅读流的内容,以便我可以检查集成。问题是,在序列化之后,流已关闭,我无法再从中读取。
我看到JsonWriter public bool CloseOutput { get; set; }
但是我没有看到这个静态JsonSerializer的东西。
最好的方法是什么? 如何阻止Serializer关闭流? 有什么方法可以检查Stream的内容吗?
答案 0 :(得分:4)
从.net 4.5以上,您可以使用LeaveOpen
的{{1}}构造函数参数。
在反编译类型时,StreamWriter
使用的默认缓冲区大小为1024。
所以你可以做到以下几点。
StreamWriter
答案 1 :(得分:0)
尝试这样的事情:
public static void WriteSymbol(Stream stream, Symbol symbol)
{
using (var streamWriter = new StreamWriter(stream))
{
JsonSerializer.Create(SerializerSettings).Serialize(streamWriter, symbol);
// test stream here
}
}
或者不要使用using语句包围此调用,然后关闭此方法之外的流。