Я начинаю с protobuf, и у меня проблемы. Надеюсь, вы можете мне помочь:Protobuf-net не сериализуется? Вывод почти простого текста
Я опробовал [пример] [1] страницы protobuf-net и получил он работает. Я продлил это, что хранится не только один человек, но и другой класс данных, который содержит список из 10000 человек. Затем я сериализовал этот класс данных и просмотрел вывод. Я ожидал увидеть некоторый двоичный материал и был удивлен увидеть почти все, как обычный текст:
π`Fred
Flat 1The Meadows
π`Fred
Flat 1The Meadows
π`Fred
Flat 1The Meadows
π`Fred
Flat 1The Meadows
π`Fred
...
Мой код очень прост:
namespace SNSClient.Assets.Scripts.GamePlay.Testing
{
[ProtoContract]
class Person
{
[ProtoMember(1)]
public int Id {get;set;}
[ProtoMember(2)]
public string Name {get; set; }
[ProtoMember(3)]
public Address Address {get;set;}
}
[ProtoContract]
class Address
{
[ProtoMember(1)]
public string Line1 {get;set;}
[ProtoMember(2)]
public string Line2 {get;set;}
}
[ProtoContract]
class MyProtoDataHolder
{
[ProtoMember(1)]
public List<Person> persons { get; set; }
}
}
Для сериализации:
List<Person> dataList = new List<Person>();
for (int i = 0; i < 100000; i++)
{
var person = new Person {
id = 12345, Name = "Fred",
Address = new Address {
Line1 = "Flat 1",
Line2 = "The Meadows"
}
};
dataList.Add(person);
}
var data = new MyProtoDataHolder() {persons = dataList};
using (var file = File.Create(Application.dataPath + "/dataList.bin"))
{
Serializer.Serialize(file, data);
}
Я м, ожидая, что я что-то упустил, потому что размер выходного файла не то, что я ожидал бы.
Спасибо за помощь!
Поскольку 'Name' и' Address' являются строками, значения будут считаны. Если вы не хотите, чтобы вы могли использовать [CryptoStream] (http://msdn.microsoft.com/en-us/library/system.security.cryptography.cryptostream (v = vs.110) .aspx? Cs-save- Ланг = 1 & CS-Ланг = CSharp # код-фрагмент-1). – Plutonix
Если вы десериализуете свой файл, будут ли таким образом восстановлены классы, идентичные оригиналам? Или есть какая-то реальная разница? – dbc
* почему * вы считаете, что это * есть * сериализация неправильная? –