Я играю с бета-версией Protobuf-net v2 (r363 из SVN).Я построил его с использованием Visual Studio 2010, проекта Proto 2010.sln, а оттуда protobuf-net_Phone7 с использованием конфигурации Silverlight 2.Я могу сослаться на полученный DLL из проектов Windows Phone 7.Я упоминаю все это, потому что я не уверен на 100%, что это правильный способ его построения.
Предполагая, что это правильный вариант, я пытался создать очень простой проект, но он потерпел неудачу.Я получаю исключение MissingMethodException в ProtoBuf.Serializers.TypeSerializer.CreateInstance (источник ProtoReader) при попытке десериализации.Этот же код (но в форме вместо страницы) отлично работает на той же версии protobuf-net v2, которую я создал для Windows Mobile 6.5, поэтому мне интересно, правильно ли я его построил или есть другой способ его использованияв WP7.
[ProtoContract]
public class Person
{
[ProtoMember(1)]
public int Id { get; set; }
[ProtoMember(2)]
public string Name { get; set; }
[ProtoMember(3)]
public Address Address { get; set; }
}
[ProtoContract]
public class Address
{
[ProtoMember(1)]
public string Line1 { get; set; }
[ProtoMember(2)]
public string Line2 { get; set; }
}
public partial class MainPage : PhoneApplicationPage
{
// Constructor
public MainPage()
{
InitializeComponent();
}
private void button1_Click(object sender, RoutedEventArgs e)
{
Person person = new Person();
person.Address = new Address();
person.Address.Line1 = "First Line";
person.Address.Line2 = "Second Line";
person.Id = 1;
person.Name = "Name";
MemoryStream ms = new MemoryStream();
Serializer.Serialize(ms, person);
ms.Position = 0;
Person person2 = Serializer.Deserialize(ms);
ms.Position = 0;
}
}