如何在Windows Phone 7上使用protobuf-net v2?

时间:2011-03-28 19:04:15

标签: c# windows-phone-7 protobuf-net

我正在玩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;

        }

    }

1 个答案:

答案 0 :(得分:1)

此博客文章介绍了一些选项 - http://blog.chrishayuk.com/2010/12/protocol-buffers-generator.html - 并说它是为WP7构建的