StreamReader返回null

问题描述 投票:0回答:1

我的目标是开始使用Stream以读取HTTP内容(HttpResponseMessage.Content)。就目前而言,我正在使用ReadAsStringAsync读取内容,并且我想使用ReadAsStreamAsync来提高性能和内存使用率。

为了实现这一点,我建立了一个小型单元测试,该测试应该安排一个Stream,然后读取它并将其转换为原始对象。

预期结果应为反序列化后的原始对象,但它返回null。

// Arrenge
List<TypiCode> typiCodes = new List<TypiCode>()
{
    new TypiCode()
    {
        Completed = true,
        Id = this._random.Next(1000),
        Title = Guid.NewGuid().ToString(),
        UserId = this._random.Next(1000)
    }
};

IFormatter formatter = new BinaryFormatter();
Stream stream = new MemoryStream();            
formatter.Serialize(stream, typiCodes);

// Act
List<TypiCode> result = null;
using (var streamReader = new StreamReader(stream))
{
    using (JsonTextReader jsonTextReader = new JsonTextReader(streamReader))
    {
        var jsonSerializer = new JsonSerializer();
        result = jsonSerializer.Deserialize<List<TypiCode>>(jsonTextReader);                    
    }
}

//Assert
Assert.IsNotNull(result); //--->Failed!

模型:

[Serializable]
public class TypiCode
{
    public int UserId { get; set; }
    public int Id { get; set; }
    public string Title { get; set; }
    public bool Completed { get; set; }
}

为什么StreamReader返回null?

c# .net-core stream streamreader
1个回答
1
投票

写入流后,您在后面数据。您需要重新开始。

重置流位置:

// your code

Formatter formatter = new BinaryFormatter();
Stream stream = new MemoryStream();            
formatter.Serialize(stream, typiCodes);

stream.Seek(0);

// more of youre code
© www.soinside.com 2019 - 2024. All rights reserved.