代码之家  ›  专栏  ›  技术社区  ›  Shahar Shokrani

StreamReader返回空值

  •  1
  • Shahar Shokrani  · 技术社区  · 6 年前

    我的目标是开始使用 Stream 为了读取HTTP内容( HttpResponseMessage.Content ). 就我现在使用的 ReadAsStringAsync 为了阅读内容,我想用 ReadAsStreamAsync .

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

    反序列化后的预期结果应为原始对象,但返回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)
        }
    };
    
    var jsonSerializer = new JsonSerializer();
    
    Stream stream = new MemoryStream();
    StreamWriter writer = new StreamWriter(stream);
    JsonTextWriter jsonWriter = new JsonTextWriter(writer);
    jsonSerializer.Serialize(jsonWriter, typiCodes);
    jsonWriter.Flush();
    
    // Act
    List<TypiCode> result = null;
    using (var streamReader = new StreamReader(stream))
    {
        using (JsonTextReader jsonTextReader = new JsonTextReader(streamReader))
        {                      
            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; }
    }
    

    1 回复  |  直到 6 年前
        1
  •  2
  •   Patrick Artner    6 年前

    在给小溪写信之后 后面

    重置流位置:

    // your code
    
    Formatter formatter = new BinaryFormatter();
    Stream stream = new MemoryStream();            
    formatter.Serialize(stream, typiCodes);
    
    stream.Seek(0, SeekOrigin.Begin);
    
    // more of youre code
    

    独库: