我正在玩Protobuf-net v2的测试版(来自SVN的r363)。 我使用Visual Studio 2010,Proto 2010.sln项目以及使用Silverlight 2配置的protobuf-net_Phone7构建它。我可以从Windows Phone 7项目中引用生成的dll。我提到这一切是因为我不能100%确定这是构建它的正确方法。
假设它是正确的,我试图构建一个非常简单的项目,但它失败了。尝试反序列化时,我在ProtoBuf.Serializers.TypeSerializer.CreateInstance(ProtoReader源)中遇到MissingMethodException。这个相同的代码(但是在Form而不是Page中)在我为Windows Mobile 6.5构建的相同版本的protobuf-net v2上工作正常,所以我想知道我是不是错误地构建它或者有不同的方式来使用它在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;
}
}
答案 0 :(得分:1)
此博客文章介绍了一些选项 - http://blog.chrishayuk.com/2010/12/protocol-buffers-generator.html - 并说它是为WP7构建的