#c# #msgpack
#c# #msgpack
Вопрос:
Если у меня есть класс без каких-либо объектов переменного размера (например, строк, списков и т. Д.), Есть ли в библиотеке MessagePack какая-либо служебная функция для вычисления размера двоичного представления объекта?
Пример класса:
[MessagePackObject]
class Foo {
[Key(0)]
public int A { get; set; }
[Key(1)]
public float B { get; set; }
}
В настоящее время лучше всего просто сериализовать объект и измерить его длину.
Ответ №1:
Передайте конечный объект вспомогательному методу, чтобы получить используемые байты, т.е.;
var obj = new Foo { A = 1, B = 2};
var bytes = Foo.ToMessagePack();
Debug.WriteLine($"size in bytes is {bytes.Length}");
И метод расширения;
public static class Helpers
{
public static byte[] ToMessagePack<T>(this T data) => MessagePackSerializer.Serialize(data);
}
Комментарии:
1. Да, это мой текущий лучший выбор 🙂