Exemplo n.º 1
0
 /// <summary>
 /// Initializes a new instance of the <see cref="WizardBuilder" /> class.
 /// </summary>
 public WizardBuilder()
 {
     Size   = _defaultSize;
     _steps = new List <WizardStepBuilder>();
 }
Exemplo n.º 2
0
        static void Main(string[] args)
        {
            //system enums
            //initializing a WeekDay with a value of Sunday  value won't work
            Console.WriteLine("System enum examples");
            Console.WriteLine(
                $"Initialize {nameof(WeekDay)} with {nameof(DayOfWeek.Sunday)} shouldn't be possible'");
            try
            {
                var s = new WeekDay(DayOfWeek.Sunday);
                Console.WriteLine("FAIL");
            }
            catch
            {
                Console.WriteLine("OK");
            }

            //mondays will always be mondays (sorry...)
            Console.WriteLine();
            Console.WriteLine(
                $"A {nameof(WeekDay)} with value {nameof(DayOfWeek.Monday)} should equal {nameof(DayOfWeek)} with value  {nameof(DayOfWeek.Monday)}");
            var monday = new WeekDay(DayOfWeek.Monday);

            Console.WriteLine(monday == DayOfWeek.Monday ? "OK" : "FAIL");

            //compare
            var friday = new WeekDay(DayOfWeek.Friday);

            Console.WriteLine();
            Console.WriteLine("Compare: less than");
            Console.WriteLine($"{monday} < {nameof(WeekDay)}.{DayOfWeek.Friday} = {monday < friday}");
            Console.WriteLine($"{monday} < {nameof(DayOfWeek)}.{DayOfWeek.Friday} = {monday < DayOfWeek.Friday}");
            Console.WriteLine($"{friday} < {nameof(WeekDay)}.{DayOfWeek.Monday} = {friday < monday}");
            Console.WriteLine($"{friday} < {nameof(DayOfWeek)}.{DayOfWeek.Monday} = {friday < DayOfWeek.Monday}");
            Console.WriteLine($"{monday} < {nameof(WeekDay)}.{DayOfWeek.Monday} = {monday < monday}");
            Console.WriteLine($"{monday} < {nameof(DayOfWeek)}.{DayOfWeek.Monday} = {monday < DayOfWeek.Monday}");

            Console.WriteLine();
            Console.WriteLine("Compare: greater than");
            Console.WriteLine($"{monday} > {nameof(WeekDay)}.{DayOfWeek.Friday} = {monday > friday}");
            Console.WriteLine($"{monday} > {nameof(DayOfWeek)}.{DayOfWeek.Friday} = {monday > DayOfWeek.Friday}");
            Console.WriteLine($"{friday} > {nameof(WeekDay)}.{DayOfWeek.Monday} = {friday > monday}");
            Console.WriteLine($"{friday} > {nameof(DayOfWeek)}.{DayOfWeek.Monday} = {friday > DayOfWeek.Monday}");
            Console.WriteLine($"{monday} > {nameof(WeekDay)}.{DayOfWeek.Monday} = {monday > monday}");
            Console.WriteLine($"{monday} > {nameof(DayOfWeek)}.{DayOfWeek.Monday} = {monday > DayOfWeek.Monday}");

            Console.WriteLine();
            Console.WriteLine("Compare: less than or equal");
            Console.WriteLine($"{monday} <= {nameof(WeekDay)}.{DayOfWeek.Friday} = {monday <= friday}");
            Console.WriteLine($"{monday} <= {nameof(DayOfWeek)}.{DayOfWeek.Friday} = {monday <= DayOfWeek.Friday}");
            Console.WriteLine($"{friday} <= {nameof(WeekDay)}.{DayOfWeek.Monday} = {friday <= monday}");
            Console.WriteLine($"{friday} <= {nameof(DayOfWeek)}.{DayOfWeek.Monday} = {friday <= DayOfWeek.Monday}");
            Console.WriteLine($"{monday} <= {nameof(WeekDay)}.{DayOfWeek.Monday} = {monday <= monday}");
            Console.WriteLine($"{monday} <= {nameof(DayOfWeek)}.{DayOfWeek.Monday} = {monday <= DayOfWeek.Monday}");

            Console.WriteLine();
            Console.WriteLine("Compare: greater than or equal");
            Console.WriteLine($"{monday} >= {nameof(WeekDay)}.{DayOfWeek.Friday} = {monday >= friday}");
            Console.WriteLine($"{monday} >= {nameof(DayOfWeek)}.{DayOfWeek.Friday} = {monday >= DayOfWeek.Friday}");
            Console.WriteLine($"{friday} >= {nameof(WeekDay)}.{DayOfWeek.Monday} = {friday >= monday}");
            Console.WriteLine($"{friday} >= {nameof(DayOfWeek)}.{DayOfWeek.Monday} = {friday >= DayOfWeek.Monday}");
            Console.WriteLine($"{monday} >= {nameof(WeekDay)}.{DayOfWeek.Monday} = {monday >= monday}");
            Console.WriteLine($"{monday} >= {nameof(DayOfWeek)}.{DayOfWeek.Monday} = {monday >= DayOfWeek.Monday}");

            //custom enums
            //initializing with an invalid enum value won't work
            Console.WriteLine();
            Console.WriteLine("Custom enum examples");
            Console.WriteLine(
                $"Initialize {nameof(SmallSize)} with {nameof(Size.Value.Large)} shouldn't be possible'");
            try
            {
                var s = new SmallSize(Size.Value.Large);
                Console.WriteLine("FAIL");
            }
            catch
            {
                Console.WriteLine("OK");
            }

            var xSmall = new SmallSize(Size.Value.ExtraSmall);

            Console.WriteLine();
            Console.WriteLine($"{nameof(SmallSize)} with value {nameof(Size.Value.ExtraSmall)} ToString:");
            Console.WriteLine(xSmall);

            //cast object to  underlying enum representation
            Console.WriteLine();
            Console.WriteLine($"Cast {nameof(SmallSize)} to {nameof(Size.Value)}");
            Console.WriteLine($"{(Size.Value)xSmall} = {(Size.Value)xSmall}");

            //cast object to integer representation
            Console.WriteLine();
            Console.WriteLine($"Cast {nameof(SmallSize)} to int");
            Console.WriteLine($"{xSmall} = {(int)xSmall}");

            //compare object against underlying enum value in a switch
            Console.WriteLine();
            Console.WriteLine($"Switch {nameof(SmallSize)} comparing to {nameof(Size.Value)}");
            switch ((Size.Value)xSmall)
            {
            case Size.Value.ExtraSmall:
                Console.WriteLine("OK");
                break;

            default:
                Console.WriteLine("FAIL");
                break;
            }

            //compare object against underlying int value in a switch
            Console.WriteLine();
            Console.WriteLine($"Switch {nameof(SmallSize)} comparing to int");
            switch ((int)xSmall)
            {
            case (int)Size.Value.ExtraSmall:
                Console.WriteLine("OK");
                break;

            default:
                Console.WriteLine("FAIL");
                break;
            }

            //comparing two objects with the same underlying enum,
            //and no inheritance relation between the types
            var realSmall = new SmallSize(Size.Value.Small);
            var anySmall  = new AnySize(Size.Value.Small);

            Console.WriteLine();
            Console.WriteLine($"{nameof(realSmall)} does not equal {nameof(anySmall)} (2 tests)");
            Console.WriteLine(realSmall != anySmall ? "OK" : "FAIL");
            Console.WriteLine(anySmall != realSmall ? "OK" : "FAIL");


            //comparing two objects with the same underlying enum,
            //and derived types
            var basicSmall    = new BasicSize(Size.Value.Small);
            var extendedSmall = new ExtendedSize(Size.Value.Small);

            Console.WriteLine();
            Console.WriteLine($"{nameof(basicSmall)} equals {nameof(extendedSmall)} (2 tests)");
            Console.WriteLine(basicSmall == extendedSmall ? "OK" : "FAIL");
            Console.WriteLine(extendedSmall == basicSmall ? "OK" : "FAIL");
        }