public Person(Google.Protobuf.Examples.AddressBook.Person person)
 {
     this.姓名     = person.Name;
     this.Id     = person.Id;
     this.Email  = person.Email;
     this.Phones = person.Phones.Select(p => new PhoneNumber {
         Number = p.Number, Type = (PhoneType)p.Type
     }).ToList();
 }
        public void Protobuf_Serialize_Deserialize_Test()
        {
            var person = new Google.Protobuf.Examples.AddressBook.Person
            {
                Name  = "Michael",
                Email = "*****@*****.**"
            };

            using (var bus = new RabbitMQBus())
            {
                using (var subscriber = bus.CreateSubscriber(c => c.AddProtobufSerializer().SetReceiveSelfPublish()))
                {
                    Google.Protobuf.Examples.AddressBook.Person actual = null;

                    ManualResetEvent ev = new ManualResetEvent(false);

                    subscriber.Subscribe <Google.Protobuf.Examples.AddressBook.Person>(p =>
                    {
                        actual = p;

                        ev.Set();
                    });

                    subscriber.Open();

                    using (var publisher = bus.CreatePublisher(c => c.UseProtobufSerializer()))
                    {
                        publisher.Send(person);
                    }

                    var res = ev.WaitOne(TimeSpan.FromSeconds(10));

                    Assert.True(res);
                    Assert.NotNull(actual);

                    Assert.True(actual.Equals(person));
                }
            }
        }