1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- using System;
- using System.IO;
- namespace Google.ProtocolBuffers.Examples.AddressBook
- {
- class SampleUsage
- {
- static void Main()
- {
- byte[] bytes;
- //Create a builder to start building a message
- Person.Builder newContact = Person.CreateBuilder();
- //Set the primitive properties
- newContact.SetId(1)
- .SetName("Foo")
- .SetEmail("foo@bar");
- //Now add an item to a list (repeating) field
- newContact.AddPhone(
- //Create the child message inline
- Person.Types.PhoneNumber.CreateBuilder().SetNumber("555-1212").Build()
- );
- //Now build the final message:
- Person person = newContact.Build();
- //The builder is no longer valid (at least not now, scheduled for 2.4):
- newContact = null;
- using(MemoryStream stream = new MemoryStream())
- {
- //Save the person to a stream
- person.WriteTo(stream);
- bytes = stream.ToArray();
- }
- //Create another builder, merge the byte[], and build the message:
- Person copy = Person.CreateBuilder().MergeFrom(bytes).Build();
- //A more streamlined approach might look like this:
- bytes = AddressBook.CreateBuilder().AddPerson(copy).Build().ToByteArray();
- //And read the address book back again
- AddressBook restored = AddressBook.CreateBuilder().MergeFrom(bytes).Build();
- //The message performs a deep-comparison on equality:
- if(restored.PersonCount != 1 || !person.Equals(restored.PersonList[0]))
- throw new ApplicationException("There is a bad person in here!");
- }
- }
- }
|