Я просмотрел как protobuf-net Марка Гравелла, так и Джона Скита, однако они, кажется, делают намного больше, чем я ищу, плюс у меня проблемы с запуском их кода (получение System & System.Xmlсправочные вопросы) но тогда я работаю с их последней на code.google.com.
Обычно я просматриваю их тесты, но в тестах Джона используется так много помощников, за которыми трудно следить, и Марк вывел OO и объектную зависимость на максимум.Если только я полностью не пропущу что-то, чем я мог бы быть.
Я ищу минимальные минимальные классы из того или другого проекта для кодирования строк или чисел (int, int16, in64, double, float, decimal и т. Д.).Я не хочу кодировать класс или вложенные классы.Я не ищу кого-то, чтобы написать все это тоже.Я надеюсь, что кто-то может либо указать мне на минимальные минимальные классы / методы, которые это делают, либо на фактические подробности о том, как реализовать это без особых усилий (кроме простого использования того, что реализовано Jon & Marc, или просто обратиться кGoogle Protocols Buffer docs).
В основном я ищу что-то простое, как:
public class test {
public void serialize_test() {
using(var ms = new MemoryStream())
{
var str = "This is a test!";
Serializer.Serialize(ms, str);
byte[] raw = ms.ToArray();
ms.Position = 0;
var obj = Serializer.Deserialize(ms);
Assert.AreEqual(str, (string)obj);
};
}
public void serialize_to_field_test() {
using(var ms = new MemoryStream())
{
var str = "This is a test!";
Serializer.SerializeField(ms, str, 1);
Serializer.SerializeField(ms, "field 2 value", 2);
Serializer.SerializeField(ms, "field 3 value", 3);
Serializer.SerializeField(ms, 4, 4);
byte[] raw = ms.ToArray();
ms.Position = 0;
// probably should use an iterator pattern
var field1 = Serializer.DeserializeField(ms, 1);
var field2 = Serializer.DeserializeField(ms, 2);
var field3 = Serializer.DeserializeField(ms, 3);
var field4 = Serializer.DeserializeField(ms, 4);
Assert.AreEqual(str, (string)field1);
Assert.AreEqual("field 2 value", (string)field2);
Assert.AreEqual("field 3 value", (string)field3);
Assert.AreEqual(4, (int)field4);
};
}
}