Example #1
0
        public void TestProtocolBuffers()
        {
            // 注意: 这里没办法简单  Person person = new Person();

            Person.Builder builder = new Person.Builder();
            builder.SetEmail("*****@*****.**");
            builder.SetId(123);
            builder.SetName("张三");

            builder.AddPhone(new Person.Types.PhoneNumber.Builder().SetNumber("13012345678").SetType(Person.Types.PhoneType.MOBILE));
            builder.AddPhone(new Person.Types.PhoneNumber.Builder().SetNumber("02112345678").SetType(Person.Types.PhoneType.HOME));

            // 生成 person 类
            Person person = builder.Build();

            // 序列化.
            byte[] buf = person.ToByteArray();

            // 写入文件.
            System.IO.File.WriteAllBytes("test.dat", buf);



            // 读取.
            byte[] dataBuff = System.IO.File.ReadAllBytes("test.dat");


            // 反序列化.
            try
            {
                Person person2 = Person.ParseFrom(dataBuff);
                Console.WriteLine(person2.Id + "," + person2.Name + ", " + person2.Email);
                IList <Person.Types.PhoneNumber> lstPhones = person2.PhoneList;
                foreach (Person.Types.PhoneNumber phoneNumber in lstPhones)
                {
                    Console.WriteLine(phoneNumber.Number + " : " + phoneNumber.Type);
                }
            }
            catch (InvalidProtocolBufferException e)
            {
                // TODO Auto-generated catch block
                Console.WriteLine(e.Message);
            }



            Console.WriteLine("Finish!!!");
            Console.ReadLine();
        }
Example #2
0
        static void Main(string[] args)
        {
            //new Person.Builder().SetId(1).SetName("王尼玛").SetEmail("*****@*****.**").Build().ToByteArray();
            byte[]         bytes;
            Person.Builder newContact = Person.CreateBuilder();
            newContact.SetId(1).SetName("Foo").SetEmail("foo@bar");
            newContact.AddPhone(Person.Types.PhoneNumber.CreateBuilder().SetNumber("555-1212").BuildPartial());
            Person person = newContact.BuildPartial();

            newContact = null;
            using (MemoryStream ms = new MemoryStream())
            {
                person.WriteTo(new CodedOutputStream(ms));
                bytes = ms.ToArray();
            }

            Console.WriteLine("Hello World!");
        }
        public static IEnumerable <object[]> GetAddressBookCases()
        {
            Person.Builder personBuilder = Person.CreateBuilder();
            personBuilder.SetId(1);
            personBuilder.SetName("Foo");
            personBuilder.SetEmail("foo@bar");

            Person.Types.PhoneNumber.Builder phoneBuilder = Person.Types.PhoneNumber.CreateBuilder();
            phoneBuilder.SetType(Person.Types.PhoneType.HOME);
            phoneBuilder.SetNumber("555-1212");
            Person.Types.PhoneNumber phone1 = phoneBuilder.Build();

            personBuilder.AddPhone(phone1);

            Person person1 = personBuilder.Build();

            AddressBook.Builder addressBuilder = AddressBook.CreateBuilder();
            addressBuilder.AddPerson(person1);

            yield return(new object[]
            {
                addressBuilder.Build(),
                false
            });

            yield return(new object[]
            {
                addressBuilder.Build(),
                true
            });

            phoneBuilder = Person.Types.PhoneNumber.CreateBuilder();
            phoneBuilder.SetType(Person.Types.PhoneType.MOBILE);
            phoneBuilder.SetNumber("+61 123456789");

            Person.Types.PhoneNumber phone2 = phoneBuilder.Build();
            personBuilder.AddPhone(phone1);
            personBuilder.AddPhone(phone2);

            addressBuilder = AddressBook.CreateBuilder();
            addressBuilder.AddPerson(person1);

            yield return(new object[]
            {
                addressBuilder.Build(),
                false
            });

            yield return(new object[]
            {
                addressBuilder.Build(),
                true
            });

            personBuilder = Person.CreateBuilder();
            personBuilder.SetId(2);
            personBuilder.SetName("姓名");
            personBuilder.SetEmail("*****@*****.**");

            personBuilder.AddPhone(phone2);
            personBuilder.AddPhone(phone1);

            Person person2 = personBuilder.Build();

            addressBuilder = AddressBook.CreateBuilder();
            addressBuilder.AddPerson(person1);
            addressBuilder.AddPerson(person2);

            yield return(new object[]
            {
                addressBuilder.Build(),
                false
            });

            yield return(new object[]
            {
                addressBuilder.Build(),
                true
            });
        }