Example #1
0
        public static void FluentBuilderDemo()
        {
            var builder = new Person.Builder();
            var person  = builder.Called("Pranav").WorksAsA("Accountant").BornAt("11-02-1995").Build();

            Console.WriteLine(person);
        }
Example #2
0
        private static void Main(string[] args)
        {
            var builder = new Person.Builder();

            var person = builder.WorksAsA("Developer").Called("John Doe").Build();

            Console.WriteLine(person.ToString());
        }
Example #3
0
        public static void Main(string[] args)
        {
            var builder = new Person.Builder();
            var person  = builder.Called("Lucho").WorksAsA("Son").Build();

            Console.WriteLine(person);
            Console.ReadKey();
        }
Example #4
0
 static void Main(string[] args)
 {
     var jon = new Person.Builder
     {
         Name = "Jon",
         Address = new Address.Builder { City = "Reading", Street = "..." }.Build(),
         Phones = { }
     }.Build();
 }
Example #5
0
        /// <summary>
        /// Builds a person based on user input
        /// </summary>
        static Person PromptForAddress(TextReader input, TextWriter output)
        {
            Person.Builder person = Person.CreateBuilder();

            output.Write("Enter person ID: ");
            person.Id = int.Parse(input.ReadLine());

            output.Write("Enter name: ");
            person.Name = input.ReadLine();

            output.Write("Enter email address (blank for none): ");
            string email = input.ReadLine();

            if (email.Length > 0)
            {
                person.Email = email;
            }

            while (true)
            {
                output.Write("Enter a phone number (or leave blank to finish): ");
                string number = input.ReadLine();
                if (number.Length == 0)
                {
                    break;
                }

                Person.Types.PhoneNumber.Builder phoneNumber =
                    Person.Types.PhoneNumber.CreateBuilder().SetNumber(number);

                output.Write("Is this a mobile, home, or work phone? ");
                String type = input.ReadLine();
                switch (type)
                {
                case "mobile":
                    phoneNumber.Type = Person.Types.PhoneType.MOBILE;
                    break;

                case "home":
                    phoneNumber.Type = Person.Types.PhoneType.HOME;
                    break;

                case "work":
                    phoneNumber.Type = Person.Types.PhoneType.WORK;
                    break;

                default:
                    output.Write("Unknown phone type. Using default.");
                    break;
                }

                person.AddPhone(phoneNumber);
            }
            return(person.Build());
        }
Example #6
0
        static void Main(string[] args)
        {
            //    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!");

            //  CSHead.Builder myCSHeadBuilder = CSHead.CreateBuilder();
            //  myCSHeadBuilder.SetCommand(1);
            //  myCSHeadBuilder.SetSubcmd(2);
            //  myCSHeadBuilder.SetUuid(ByteString.CopyFrom("3", Encoding.ASCII));
            //  myCSHeadBuilder.SetRouteKey(4);
            //            CSHead cshead = myCSHeadBuilder.Build();
            //byte[] CSHeadBuffer = cshead.ToByteArray();

            Person p = new Person.Builder().SetId(1).SetName("lee").SetEmail("*****@*****.**").Build();

            byte[] buffer = null;
            using (MemoryStream ms = new MemoryStream())
            {
                p.WriteTo(ms);
                buffer = ms.ToArray();
            }

            Person p2 = Person.CreateBuilder().MergeFrom(buffer).Build();
        }
Example #7
0
 static void Main(string[] args)
 {
     var jon = new Person.Builder
     {
         Name    = "Jon",
         Address = new Address.Builder {
             City = "Reading", Street = "..."
         }.Build(),
         Phones = { }
     };
 }
Example #8
0
 static void Main(string[] args)
 {
     var jon = new Person.Builder
     {
         Name = "Jon",
         Address = new Address.Builder { City = "Reading", Street = "..." }.Build(),
         Phones = {
             new PhoneNumber.Builder { Type = PhoneNumberType.Home, Number = "1234" }.Build(),
             new PhoneNumber.Builder { Type = PhoneNumberType.Mobile, Number = "5678" }.Build(),
         }
     }.Build();
 }
Example #9
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 #10
0
        public static void Run()
        {
            PersonInformation.Builder personInformationBuilder = new PersonInformation.Builder();

            Person.Builder personBuilder = new Person.Builder();
            Person         person        = personBuilder.SetAge(28).SetName("Name").Build();


            Address.Builder address = new Address.Builder();
            address.SetFlatNo("2").SetLane("Lane").SetLandmark("Landmark");

            personInformationBuilder
            .SetPerson(personBuilder)
            .SetAddress(address)
            .Build();

            personInformationBuilder.GetPerson().GetAge();
        }
Example #11
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!");
        }
Example #12
0
 static void Main(string[] args)
 {
     var jon = new Person.Builder
     {
         Name    = "Jon",
         Address = new Address.Builder {
             City = "Reading", Street = "..."
         }.Build(),
         Phones =
         {
             new PhoneNumber.Builder {
                 Type = PhoneNumberType.Home, Number = "1234"
             }.Build(),
             new PhoneNumber.Builder {
                 Type = PhoneNumberType.Mobile, Number = "5678"
             }.Build(),
         }
     }.Build();
 }
Example #13
0
        static void Main(string[] args)
        {
            Console.WriteLine("==== Builder Validation ====");

            try
            {
                var a = new Person.Builder
                {
                    FirstName = "Alex",
                    LastName  = "Bloggs"
                }.Build();

                var b = new Person.Builder(a).Build();

                Console.WriteLine($"a = {a}");

                Console.WriteLine($"b = {b}");

                Console.WriteLine($"ReferenceEquals: {ReferenceEquals(a, b)}");

                Console.WriteLine($"Equals: {Equals(a, b)}");

                var c = new Person.Builder(b)
                {
                    LastName = "Blobbs"
                }.Build();

                Console.WriteLine($"c = {c}");

                Console.WriteLine($"ReferenceEquals: {ReferenceEquals(b, c)}");

                Console.WriteLine($"Equals: {Equals(b, c)}");
            }
            catch (Person.Builder.ValidationException ex)
            {
                Console.WriteLine(ex);
            }
        }
Example #14
0
            public Builder SetPerson(Person.Builder p)
            {
                personBuilder = p;

                return(this);
            }
        public void CreateProductIfcTest()
        {
            // === create request
            string  projectName        = "test project";
            string  projectDescription = "project for test purposes";
            Project project            =
                new Project.Builder().withName(projectName)
                .withDescription(projectDescription)
                .build();
            string personGivenName  = "Cedric";
            string personFamilyName = "Mélange";
            string personIdentifier = "cmela";
            Person person           =
                new Person.Builder().withGivenName(personGivenName)
                .withFamilyName(personFamilyName)
                .withIdentifier(personIdentifier)
                .build();
            string       organizationName        = "EC Life";
            string       organizationDescription = "EC Life - for an easy, economical and ecological life";
            string       organizationIdentifier  = "ECL";
            Organization organization            =
                new Organization.Builder().withName(organizationName)
                .withDescription(organizationDescription)
                .withIdentifier(organizationIdentifier)
                .build();
            string      applicationName       = "ECL IfcCreator";
            string      applicationVersion    = "1.0";
            string      applicationIdentifier = "IfcCreator";
            Application application           =
                new Application.Builder().withName(applicationName)
                .withVersion(applicationVersion)
                .withIdentifier(applicationIdentifier)
                .withOrganization(new Organization.Builder().build())
                .build();
            OwnerHistory owner =
                new OwnerHistory.Builder().withPerson(person)
                .withOrganization(organization)
                .withApllication(application)
                .build();

            string productName        = "test product";
            string productDescription = "product for test purposes";
            string constructionString = "SHAPE({POLYLINE2D([[0,0],[0,1],[1,1],[1,0]])}).EXTRUDE(1)";
            var    material0          = new Material.Builder().withName("material0")
                                        .withColor(new ColorRGBa(1, 0, 0, 1))
                                        .withRoughness(0)
                                        .isMetal()
                                        .build();
            var material1 = new Material.Builder().withName("material1")
                            .withColor(new ColorRGBa(0, 0, 1, 1))
                            .withRoughness(1)
                            .isDielectric()
                            .build();
            RepresentationItem representationItem0 =
                new RepresentationItem.Builder()
                .withConstructionString(constructionString)
                .withMaterial(material0.id)
                .build();
            var rotationQ = new Quaternion();

            rotationQ.SetFromEuler(new double[] { 90, 90, 90 });
            RepresentationItem representationItem1 =
                new RepresentationItem.Builder()
                .withConstructionString(constructionString)
                .withTransformation(new Transformation.Builder()
                                    .withTranslation(new double[] { 2, 0, 0 })
                                    .withRotation(rotationQ.ToArray())
                                    .build())
                .withMaterial(material1.id)
                .build();
            Representation representation =
                new Representation.Builder().AddRepresentationItem(representationItem0)
                .AddRepresentationItem(representationItem1)
                .addMaterial(material0)
                .addMaterial(material1)
                .build();
            Product product =
                new Product.Builder().withName(productName)
                .withDescription(productDescription)
                .withType(ProductType.PROXY)
                .addRepresenation(representation)
                .build();
            IfcSchema         schema  = IfcSchema.IFC2X3;
            ProductIfcRequest request =
                new ProductIfcRequest.Builder().withProject(project)
                .withOwner(owner)
                .withProduct(product)
                .withSchema(schema)
                .build();

            // === convert to IFC stream
            MemoryStream       memStream         = new MemoryStream();
            IProductIfcCreator productIfcCreator = new ProductIfcCreator();

            productIfcCreator.CreateProductIfc(request, memStream);

            // === write to IFC file
            using (FileStream fileStream = File.Create("./product_ifc_creator_test.ifc"))
            {
                memStream.WriteTo(fileStream);
            }

            // === parse IFC stream
            Serializer serializer = new StepSerializer(typeof(IfcProject),
                                                       null,
                                                       schema.ToString(),
                                                       null,
                                                       "ECL IfcCreator");
            IfcProject parsedProject = (IfcProject)serializer.ReadObject(memStream);

            // === test values
            Assert.Equal(projectName, parsedProject.Name);
            Assert.Equal(projectDescription, parsedProject.Description);
            IfcOwnerHistory parsedowner = parsedProject.OwnerHistory;

            Assert.Equal(personGivenName, parsedowner.OwningUser.ThePerson.GivenName);
            Assert.Equal(personFamilyName, parsedowner.OwningUser.ThePerson.FamilyName);
            Assert.Equal(personIdentifier, parsedowner.OwningUser.ThePerson.Identification.Value.Value);
            Assert.Equal(organizationName, parsedowner.OwningUser.TheOrganization.Name);
            Assert.Equal(organizationDescription, parsedowner.OwningUser.TheOrganization.Description);
            Assert.Equal(applicationName, parsedowner.OwningApplication.ApplicationFullName);
            Assert.Equal(applicationVersion, parsedowner.OwningApplication.Version);
            Assert.Equal(applicationIdentifier, parsedowner.OwningApplication.ApplicationIdentifier.Value);
            IfcSite parsedSite = (IfcSite)GetItem(GetItem(parsedProject.IsDecomposedBy, 0).RelatedObjects, 0);

            Assert.Equal(personGivenName, parsedSite.OwnerHistory.OwningUser.ThePerson.GivenName);
            IfcBuilding parsedBuilding = (IfcBuilding)GetItem(GetItem(parsedSite.IsDecomposedBy, 0).RelatedObjects, 0);

            Assert.Equal(personGivenName, parsedBuilding.OwnerHistory.OwningUser.ThePerson.GivenName);
            IfcBuildingStorey parsedStorey = (IfcBuildingStorey)GetItem(GetItem(parsedBuilding.IsDecomposedBy, 0).RelatedObjects, 0);

            Assert.Equal(personGivenName, parsedStorey.OwnerHistory.OwningUser.ThePerson.GivenName);
            IfcProduct parsedProduct = (IfcProduct)GetItem(GetItem(parsedStorey.ContainsElements, 0).RelatedElements, 0);

            Assert.Equal(personGivenName, parsedProduct.OwnerHistory.OwningUser.ThePerson.GivenName);
            Assert.Equal(productName, parsedProduct.Name);
            Assert.Equal(productDescription, parsedProduct.Description);
            Assert.Equal(1, parsedProduct.Representation.Representations.Count);
            IfcRepresentation parsedShapeRepresentation = GetItem(parsedProduct.Representation.Representations, 0);

            Assert.Equal("Body", parsedShapeRepresentation.RepresentationIdentifier);
            Assert.Equal("SolidModel", parsedShapeRepresentation.RepresentationType);
            Assert.Equal(2, parsedShapeRepresentation.Items.Count);
            Assert.IsType <IfcExtrudedAreaSolid>(GetItem(parsedShapeRepresentation.Items, 0));
            Assert.IsType <IfcExtrudedAreaSolid>(GetItem(parsedShapeRepresentation.Items, 1));
            var parsedItem0 = (IfcExtrudedAreaSolid)GetItem(parsedShapeRepresentation.Items, 0);

            Assert.Equal(1, parsedItem0.StyledByItem.Count);
            var StyledItem0 = GetItem(parsedItem0.StyledByItem, 0);

            Assert.Equal("material0", ((IfcSurfaceStyle)GetItem(StyledItem0.Styles, 0)).Name);
            var parsedItem1 = (IfcExtrudedAreaSolid)GetItem(parsedShapeRepresentation.Items, 1);

            Assert.Equal(2, parsedItem1.Position.Location.Coordinates[0].Value);
            Assert.Equal(0, parsedItem1.Position.Location.Coordinates[1].Value);
            Assert.Equal(0, parsedItem1.Position.Location.Coordinates[2].Value);
            Assert.Equal(1, parsedItem1.Position.Axis.DirectionRatios[0].Value, 5);
            Assert.Equal(0, parsedItem1.Position.Axis.DirectionRatios[1].Value, 5);
            Assert.Equal(0, parsedItem1.Position.Axis.DirectionRatios[2].Value, 5);
            Assert.Equal(0, parsedItem1.Position.RefDirection.DirectionRatios[0].Value, 5);
            Assert.Equal(0, parsedItem1.Position.RefDirection.DirectionRatios[1].Value, 5);
            Assert.Equal(1, parsedItem1.Position.RefDirection.DirectionRatios[2].Value, 5);
            Assert.Equal(1, parsedItem0.StyledByItem.Count);
            var StyledItem1 = GetItem(parsedItem1.StyledByItem, 0);

            Assert.Equal("material1", ((IfcSurfaceStyle)GetItem(StyledItem1.Styles, 0)).Name);
        }
        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
            });
        }
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);

            Xamarin.Essentials.Platform.Init(this, savedInstanceState);

            // Set our view from the "main" layout resource
            SetContentView(Resource.Layout.activity_main);

            //------------------------------------------------------------------
            // Display Cutout Mode demo

            Button shortEdgesBtn = FindViewById <Button>(Resource.Id.short_btn);
            Button neverBtn      = FindViewById <Button>(Resource.Id.never_btn);
            Button resetBtn      = FindViewById <Button>(Resource.Id.reset_btn);

            shortEdgesBtn.Click += (sender, e) =>
            {
                Window.Attributes.LayoutInDisplayCutoutMode =
                    Android.Views.LayoutInDisplayCutoutMode.ShortEdges;
                Window.AddFlags(WindowManagerFlags.Fullscreen);
                Toast.MakeText(this, "Cutout Short Edges", ToastLength.Short).Show();
            };

            neverBtn.Click += (sender, e) =>
            {
                Window.Attributes.LayoutInDisplayCutoutMode =
                    Android.Views.LayoutInDisplayCutoutMode.Never;
                Window.AddFlags(WindowManagerFlags.Fullscreen);
                Toast.MakeText(this, "Cutout Never", ToastLength.Short).Show();
            };

            resetBtn.Click += (sender, e) =>
            {
                Window.Attributes.LayoutInDisplayCutoutMode =
                    Android.Views.LayoutInDisplayCutoutMode.Never;
                Window.ClearFlags(WindowManagerFlags.Fullscreen);
                Toast.MakeText(this, "Reset to non Full-screen", ToastLength.Short).Show();
            };

            //------------------------------------------------------------------
            // Image Notification demo:

            Button notifBtn = FindViewById <Button>(Resource.Id.notification_btn);

            notifBtn.Click += (sender, e) =>
            {
                // Create a demo notification channel for notifications in this app:
                string chanName          = GetString(Resource.String.noti_chan_demo);
                var    importance        = NotificationImportance.High;
                NotificationChannel chan = new NotificationChannel(DEMO_CHANNEL, chanName, importance);
                chan.EnableVibration(true);
                chan.LockscreenVisibility = NotificationVisibility.Public;
                NotificationManager notificationManager =
                    (NotificationManager)GetSystemService(NotificationService);
                notificationManager.CreateNotificationChannel(chan);

                // Create a Person object that represents the sender:
                Icon   senderIcon = Icon.CreateWithResource(this, Resource.Drawable.sender_icon);
                Person fromPerson = new Person.Builder()
                                    .SetIcon(senderIcon)
                                    .SetName("Mark Sender")
                                    .Build();

                // Create a text notification to send before the image notification:
                Notification.BigTextStyle textStyle = new Notification.BigTextStyle();
                string longTextMessage = "We've just arrived at the Colosseum, let me send";
                longTextMessage += " you a pic before we go inside.";
                textStyle.BigText(longTextMessage);

                // Notification builder using this style:
                Notification.Builder builder = new Notification.Builder(this, DEMO_CHANNEL)
                                               .SetContentTitle("At the Colosseum")
                                               .SetSmallIcon(Resource.Mipmap.ic_notification)
                                               .SetStyle(textStyle)
                                               .SetChannelId(DEMO_CHANNEL);

                // Publish the text notification:
                const int notificationId = 1000;
                notificationManager.Notify(notificationId, builder.Build());

                Thread.Sleep(5000);

                // Send Image notification ...........................................

                // Create a message from the sender with the image to send:
                Uri imageUri = Uri.Parse("android.resource://com.xamarin.pminidemo/drawable/example_image");
                Notification.MessagingStyle.Message message = new Notification.MessagingStyle
                                                              .Message("Here's a picture of where I'm currently standing", 0, fromPerson)
                                                              .SetData("image/", imageUri);

                // Add the message to a notification style:
                Notification.MessagingStyle style = new Notification.MessagingStyle(fromPerson)
                                                    .AddMessage(message);

                // Notification builder using this style:
                builder = new Notification.Builder(this, DEMO_CHANNEL)
                          .SetContentTitle("Tour of the Colosseum")
                          .SetContentText("We're standing in front of the Colosseum and I just took this shot!")
                          .SetSmallIcon(Resource.Mipmap.ic_notification)
                          .SetStyle(style)
                          .SetChannelId(DEMO_CHANNEL);

                // Publish the notification:
                const int notificationId2 = 1001;
                notificationManager.Notify(notificationId2, builder.Build());
            };
        }