Моя цель - начать использовать Stream
для чтения содержимого HTTP (HttpResponseMessage.Content
). На данный момент я использую ReadAsStringAsync
для чтения содержимого, и я хотел бы улучшить производительность и использование памяти с помощью ReadAsStreamAsync
.
. Чтобы добиться этого, я построил небольшой блок test, который должен организовать Stream, а затем прочитать его и преобразовать в исходный объект.
Ожидаемый результат должен быть исходным объектом после десериализации, но он возвращает ноль.
// 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; }
}
Почему StreamReader возвращает ноль?