День 1206. #ЗаметкиНаПолях
Упрощаем Работу с Данными
Если вы работаете с двоичными данными и используете byte[], можно упростить себе жизнь, используя класс BinaryData, который представляет собой облегчённую абстракцию для работы с двоичными данными, поддерживающую преобразование между строкой, потоком, JSON и байтами.
Замечание: Чтобы работать с классом BinaryData, нужно установить NuGet пакет System.Memory.Data.
Допустим, у нас есть следующий объект:
record Person(string FirstName, string LastName);
var person = new Person("John", "Smith");
Преобразуем в JSON-строку:
var personData = new BinaryData(person);
Console.WriteLine(personData.ToString());
// Вывод:
// {"FirstName":"John","LastName":"Smith"}
Преобразуем JSON в объект:
var person2 = personData.ToObjectFromJson<Person>();
Console.WriteLine(person2.ToString());
// Вывод (стандартный ToString для типа record):
// Person { FirstName = John, LastName = Smith }
Теперь рассмотрим работу со строками и двоичными данными:
var stringData = new BinaryData("Hello World!");
Преобразуем строку в массив байт:
byte[] bytes = stringData.ToArray();
var bytesData = new BinaryData(bytes);
Преобразуем массив байт в поток:
Stream stream = bytesData.ToStream();
Читаем из потока:
var streamData = BinaryData.FromStream(stream);
Console.WriteLine(streamData.ToString());
// Вывод:
// Hello World!
Источник: twitter.com/Marusyk…30535680