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(); }
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 }); }