コード例 #1
0
ファイル: Engine.cs プロジェクト: HristoGadev/CSharpAdventure
        private ISoldier GetlieutenantGeneral(int id, string firstName, string lastName, decimal salary, string[] inputArgs)
        {
            ILieutenantGeneral lieutenant = new LeutenantGeneral(firstName, lastName, id, salary);

            for (int i = 5; i < inputArgs.Length; i++)
            {
                var      privateId      = int.Parse(inputArgs[i]);
                IPrivate privateSoldier = (IPrivate)this.soldiers.FirstOrDefault(x => x.Id == privateId);
                lieutenant.Privates.Add(privateSoldier);
            }
            return(lieutenant);
        }
コード例 #2
0
        private ISoldier GetLeutenantGeneral(int id, string firstName, string lastName, decimal salary, string[] inputArgs)
        {
            ILeutenantGeneral leutenantGeneral = new LeutenantGeneral(id, firstName, lastName, salary);

            for (int counter = 5; counter < inputArgs.Length; counter++)
            {
                int      privateId      = int.Parse(inputArgs[counter]);
                IPrivate privateSoldier = (IPrivate)this.soldiers.FirstOrDefault(s => s.Id == privateId);
                leutenantGeneral.Privates.Add(privateSoldier);
            }

            return(leutenantGeneral);
        }
コード例 #3
0
ファイル: Engine.cs プロジェクト: aquaruiz/SoftUni-1
        private ISoldier GetLieutenantGeneral(int id, string firstName, string lastName, decimal salary,
                                              string[] splitted)
        {
            ILieutenantGeneral lieutenantGeneral = new LieutenantGeneral(id, firstName, lastName, salary);

            for (int i = 5; i < splitted.Length; i++)
            {
                IPrivate soldier = (IPrivate)this.soldiers
                                   .FirstOrDefault(s => s.Id == int.Parse(splitted[i]));
                lieutenantGeneral.Privates.Add(soldier);
            }
            return(lieutenantGeneral);
        }
コード例 #4
0
        private ISoldier GetLieutenantGeneral(string id, string firstName, string lastName, decimal salary, string[] argsInput)
        {
            ILieutenantGeneral lieutentGeneral = new LieutenantGeneral(id, firstName, lastName, salary);

            for (int i = 5; i < argsInput.Length; i++)
            {
                string   privateId      = argsInput[i];
                IPrivate privateSoldier = (IPrivate)this.soldiers.FirstOrDefault(x => x.Id == privateId);

                lieutentGeneral.Privates.Add(privateSoldier);
            }
            return(lieutentGeneral);
        }
コード例 #5
0
        private ISoldier GeneratePrivate(int id, string firstName, string lastName, string[] args)
        {
            ILieutenantGeneral lieutenant = new LieutenantGeneral(firstName, lastName, id, decimal.Parse(args[4]));

            for (int i = 5; i < args.Length; i++)
            {
                int      privateId   = int.Parse(args[i]);
                IPrivate subordinate = (IPrivate)soldiers.FirstOrDefault(x => x.Id == privateId);
                lieutenant.Privates.Add(subordinate);
            }

            return(lieutenant);
        }
コード例 #6
0
        private ISoldier GetLieutenantGeneral(int id, string firstName, string lastName, decimal salary, string[] tokens)
        {
            ILieutenantGeneral lieutenantGeneral = new LieutenantGeneral(id, firstName, lastName, salary);

            for (int i = 5; i < tokens.Length; i++)
            {
                int      privateId      = int.Parse(tokens[i]);
                IPrivate privateSoldier = (IPrivate)this.soldiers.FirstOrDefault(x => x.Id == privateId);

                lieutenantGeneral.Privates.Add(privateSoldier);
            }
            return(lieutenantGeneral);
        }
コード例 #7
0
        private ISoldier GetLieutenantGeneral(string id, string firstName, string lastName, decimal salary, string[] info)
        {
            ILieutenantGeneral lieutenantGeneral = new LieutenantGeneral(id, firstName, lastName, salary);

            List <string> privates = new List <string>();

            for (int i = 5; i < info.Length; i++)
            {
                IPrivate privateSoldier = (IPrivate)soldiers.FirstOrDefault(s => s.Id == info[i]);
                lieutenantGeneral.AddPrivates(privateSoldier);
            }

            return(lieutenantGeneral);
        }
コード例 #8
0
ファイル: StartUp.cs プロジェクト: daka7a11/Softuni-Homework
        public static List <IPrivate> GetLieutenantGeneralPrivates(string[] ids, List <ISoldier> soldiers)
        {
            List <IPrivate> privates = new List <IPrivate>();

            foreach (var id in ids)
            {
                IPrivate @private = (Private)soldiers.FirstOrDefault(x => x.Id == int.Parse(id));
                if (@private != null)
                {
                    privates.Add(@private);
                }
            }
            return(privates);
        }
コード例 #9
0
ファイル: Engine.cs プロジェクト: BorianKrustev/School
        private ISoldier GetLieutenantGeneral(int id, string firstName, string lastName, decimal salary, string[] comands)
        {
            ILieutenantGeneral LGeneral = new LieutenantGeneral(id, firstName, lastName, salary);

            for (int i = 5; i < comands.Length; i++)
            {
                int privetId = int.Parse(comands[i]);

                IPrivate curentPrivet = (IPrivate)soldiers.FirstOrDefault(x => x.Id == privetId);

                LGeneral.Privets.Add(curentPrivet);
            }

            return(LGeneral);
        }
コード例 #10
0
        private ISoldier GetLieutenantGeneral(int id, string firstName, string lastName, decimal salary, string[] inputArgs)
        {
            ILieutenantGeneral lieutenantGeneral = new LieutenantGeneral(id, firstName, lastName, salary);

            for (int i = 5; i < inputArgs.Length; i++)
            {
                var      privateSoldierId = int.Parse(inputArgs[i]);
                IPrivate privateSodier    = (IPrivate)soldiers.FirstOrDefault(p => p.Id == privateSoldierId);
                if (privateSodier != null)
                {
                    lieutenantGeneral.Privates.Add(privateSodier);
                }
            }

            return(lieutenantGeneral);
        }
コード例 #11
0
        private ISoldier CreateLieutenantGeneral(int id, string firstName, string lastName, string[] inputArgs)
        {
            decimal salray = decimal.Parse(inputArgs[4]);

            ILieutenantGeneral lieutenantGeneral = new LieutenantGeneral(id, firstName, lastName, salray);

            for (int i = 5; i < inputArgs.Length; i++)
            {
                int currentId = int.Parse(inputArgs[i]);

                IPrivate curentPrivate = (IPrivate)soldiers.FirstOrDefault(x => x.Id == currentId);

                lieutenantGeneral.Privates.Add(curentPrivate);
            }

            return(lieutenantGeneral);
        }
コード例 #12
0
        private void AddLieutenantGeneral(string id, string firstName, string lastName, string[] data)
        {
            decimal            salary            = decimal.Parse(data[4]);
            ILieutenantGeneral lieutenantGeneral = new LieutenantGeneral(id, firstName, lastName, salary);

            for (int i = 5; i < data.Length; i++)
            {
                IPrivate targetPrivate = (IPrivate)this.GetSoldierById(data[i]);

                if (targetPrivate != null)
                {
                    lieutenantGeneral.Privates.Add(targetPrivate);
                }
            }

            this.soldiers.Add(lieutenantGeneral);
        }
コード例 #13
0
        private ISoldier GetLieutenantGeneral(string id, string firstName,
                                              string lastName, decimal salary, string[] commandArgs)
        {
            ILieutenantGeneral lieutenantGeneral = new LieutenantGeneral(id, firstName, lastName, salary);

            string[] privatesToAddArgs = commandArgs
                                         .Skip(5)
                                         .ToArray();
            foreach (var pid in privatesToAddArgs)
            {
                IPrivate soldierToAdd = (IPrivate)this.arms
                                        .First(s => s.Id == pid);
                lieutenantGeneral.AddPrivate(soldierToAdd);
            }

            return(lieutenantGeneral);
        }
コード例 #14
0
 private void CreateLieutenantGeneral(string[] tokens, string soldierType, int soldierId, string firstName, string lastName)
 {
     if (soldierType == typeof(LieutenantGeneral).Name)
     {
         decimal         salary   = decimal.Parse(tokens[4]);
         List <IPrivate> privates = new List <IPrivate>();
         for (int i = 5; i < tokens.Length; i++)
         {
             IPrivate searchedPrivate =
                 (IPrivate)soldiers.FirstOrDefault(s => s.Id == int.Parse(tokens[i]) && s.GetType().Name == "Private");
             if (searchedPrivate != null)
             {
                 privates.Add(searchedPrivate);
             }
         }
         ISoldier currentSoldier = new LieutenantGeneral
                                       (soldierId, firstName, lastName, salary, privates);
         soldiers.Add(currentSoldier);
     }
 }
コード例 #15
0
    void M()
    {
        var d = new DefaultToString();

        Console.WriteLine(d.ToString()); // BAD
        var s = "hello " + d;            // BAD

        new A().ToString();              // GOOD
        new B().ToString();              // GOOD

        var ints = new int[] { 1, 2, 3 };

        Console.WriteLine(ints);                    // BAD
        Console.WriteLine(string.Join(", ", ints)); // GOOD

        s = "hello " + ints;                        // BAD
        s = "hello " + string.Join(", ", ints);     // GOOD

        s = "" + NullableE;                         // GOOD

        E e = E.A;

        Console.WriteLine(e); // GOOD

        C c = new D();

        Console.WriteLine(c); // GOOD

        var sb = new StringBuilder();

        sb.Append(new char[] { 'a', 'b', 'c' }, 0, 3); // GOOD

        IPrivate f = null;

        Console.WriteLine(f);  // BAD

        IPublic g = null;

        Console.WriteLine(g);  // GOOD
    }
コード例 #16
0
    public static ISoldier CreateSoldier(string input)
    {
        string[] token = input.Split();

        var soldierType       = token[0];
        var soldierId         = int.Parse(token[1]);
        var soldierFirstName  = token[2];
        var soldierSecondName = token[3];

        switch (soldierType)
        {
        case "Private":
            Private priv = new Private(soldierId, soldierFirstName, soldierSecondName, double.Parse(token[4]));
            Privates.Add(soldierId, priv);
            return(priv);

        case "LeutenantGeneral":
            LeutenantGeneral leutenant = new LeutenantGeneral(
                soldierId,
                soldierFirstName,
                soldierSecondName,
                double.Parse(token[4]));
            for (int i = 5; i < token.Length; i++)
            {
                int      searchedID = int.Parse(token[i]);
                IPrivate p          = Privates[searchedID];
                leutenant.AddPrivate(p);
            }

            Privates.Add(soldierId, leutenant);
            return(leutenant);

        case "Engineer":
            Engineer engineer = new Engineer(
                soldierId,
                soldierFirstName,
                soldierSecondName,
                double.Parse(token[4]),
                token[5]);
            for (int i = 6; i < token.Length; i += 2)
            {
                IRepair r = new Repair(token[i], int.Parse(token[i + 1]));
                engineer.AddRepair(r);
            }
            Privates.Add(soldierId, engineer);
            return(engineer);

        case "Commando":
            Commando commando = new Commando(
                soldierId,
                soldierFirstName,
                soldierSecondName,
                double.Parse(token[4]),
                token[5]);
            for (int i = 6; i < token.Length; i += 2)
            {
                var missionName  = token[i];
                var missionState = token[i + 1];
                try
                {
                    Mission m = new Mission(missionName, missionState);
                    commando.AddMission(m);
                }
                catch (Exception)
                {
                }
            }
            Privates.Add(soldierId, commando);
            return(commando);

        case "Spy":
            int soldeirCodeNumber = int.Parse(token[4]);
            Spy spy = new Spy(soldierId, soldierFirstName, soldierSecondName, soldeirCodeNumber);
            return(spy);

        default: return(null);
        }
    }
コード例 #17
0
 public void AddPrivate(IPrivate newPrivate)
 {
     this.listOfPrivates.Add(newPrivate);
 }
コード例 #18
0
 public void AddPrivate(IPrivate pPrivate)
 {
     this.privates.Add(pPrivate);
 }
コード例 #19
0
 public static string Stringify(this IPrivate soldier) => $"{Stringify((ISoldier) soldier)} Salary: {soldier.Salary:f2}";
コード例 #20
0
        public void Run()
        {
            string input;

            while ((input = Console.ReadLine()) != "End")
            {
                String[] commands = input.Split();
                string   command  = commands[0];

                if (command == "Private")
                {
                    int     id        = int.Parse(commands[1]);
                    string  firstName = commands[2];
                    string  lastName  = commands[3];
                    decimal salary    = decimal.Parse(commands[4]);
                    Private soldier   = new Private(id, firstName, lastName, salary);
                    this.soldiers.Add(soldier);
                }
                else if (command == "LieutenantGeneral")
                {
                    int               id        = int.Parse(commands[1]);
                    string            firstName = commands[2];
                    string            lastName  = commands[3];
                    decimal           salary    = decimal.Parse(commands[4]);
                    LieutenantGeneral general   = new LieutenantGeneral(id, firstName, lastName, salary);
                    foreach (string privateId in commands.Skip(5))
                    {
                        IPrivate getId = (IPrivate)this.soldiers.SingleOrDefault(i => i.Id == int.Parse(privateId));
                        if (getId != null)
                        {
                            general.AddPrivate(getId);
                        }
                    }
                    this.soldiers.Add(general);
                }
                else if (command == "Engineer")
                {
                    int     id        = int.Parse(commands[1]);
                    string  firstName = commands[2];
                    string  lastName  = commands[3];
                    decimal salary    = decimal.Parse(commands[4]);
                    if (Enum.TryParse <Corps>(commands[5], out Corps corps))
                    {
                        Engineer enginner    = new Engineer(id, firstName, lastName, salary, corps);
                        string[] repairParts = commands.Skip(6).ToArray();
                        for (int i = 0; i < repairParts.Length; i += 2)
                        {
                            string repairPart = repairParts[i];
                            int    repairHour = int.Parse(repairParts[i + 1]);
                            Repair repair     = new Repair(repairPart, repairHour);
                            enginner.AddRepair(repair);
                        }

                        this.soldiers.Add(enginner);
                    }
                }

                else if (command == "Commando")
                {
                    int     id        = int.Parse(commands[1]);
                    string  firstName = commands[2];
                    string  lastName  = commands[3];
                    decimal salary    = decimal.Parse(commands[4]);
                    if (Enum.TryParse <Corps>(commands[5], out Corps corps))
                    {
                        Commando soldier  = new Commando(id, firstName, lastName, salary, corps);
                        string[] missions = commands.Skip(6).ToArray();
                        for (int i = 0; i < missions.Length; i += 2)
                        {
                            string missionName  = missions[i];
                            string missionState = missions[i + 1];
                            if (Enum.TryParse(missionState, out State state))
                            {
                                Mission mission = new Mission(missionName, state);
                                soldier.AddMission(mission);
                            }
                        }

                        this.soldiers.Add(soldier);
                    }
                }
                else if (command == "Spy")
                {
                    int    id         = int.Parse(commands[1]);
                    string firstName  = commands[2];
                    string lastName   = commands[3];
                    int    codeNumber = int.Parse(commands[4]);
                    Spy    soldier    = new Spy(id, firstName, lastName, codeNumber);
                    this.soldiers.Add(soldier);
                }
            }

            print();
        }
コード例 #21
0
 public void AddPrivate(IPrivate @private)
 {
     _privates.Add(@private);
 }
コード例 #22
0
        public static void Main()
        {
            var engine = new Engine();

            var entry       = Console.ReadLine();
            var sb          = new StringBuilder();
            var privateList = new List <IPrivate>();

            while (entry != "End")
            {
                try
                {
                    var    soldierInfo = entry.Split().ToList();
                    var    type        = soldierInfo[0];
                    var    id          = soldierInfo[1];
                    var    firstName   = soldierInfo[2];
                    var    lastName    = soldierInfo[3];
                    double salary;
                    string corps;

                    switch (type)
                    {
                    case "Private":
                        salary = double.Parse(soldierInfo[4]);
                        var currentPrivate = new Private(firstName, lastName, id, salary);
                        privateList.Add(currentPrivate);
                        sb.AppendLine(currentPrivate.ToString());
                        break;

                    case "LeutenantGeneral":
                        var leutanantsPrivates = new List <IPrivate>();
                        for (int numOfPrivates = 0; numOfPrivates < soldierInfo.Count - 5; numOfPrivates++)
                        {
                            IPrivate currentPrivateToAdd = privateList.FirstOrDefault(x => x.ID == soldierInfo[5 + numOfPrivates]);
                            leutanantsPrivates.Add(currentPrivateToAdd);
                        }
                        var leutenantGeneral = new LeutanantGeneral(firstName, lastName, id, double.Parse(soldierInfo[4]), leutanantsPrivates);
                        sb.AppendLine(leutenantGeneral.ToString());
                        break;

                    case "Engineer":
                        salary = double.Parse(soldierInfo[4]);
                        corps  = soldierInfo[5];
                        var numOfRepairs = (soldierInfo.Count - 5) / 2;
                        var listRepairs  = new List <Repair>();
                        var index        = 0;
                        for (int i = 0; i < numOfRepairs; i++)
                        {
                            var repairName        = soldierInfo[6 + index];
                            var repairWorkinHours = int.Parse(soldierInfo[7 + index]);
                            var repair            = new Repair(repairName, repairWorkinHours);
                            listRepairs.Add(repair);
                            index += 2;
                        }
                        var currentEngineer = new Engineer(firstName, lastName, id, salary, corps, listRepairs);
                        sb.AppendLine(currentEngineer.ToString());
                        break;

                    case "Commando":
                        salary = double.Parse(soldierInfo[4]);
                        corps  = soldierInfo[5];
                        var numOfMissions = (soldierInfo.Count - 5) / 2;
                        var missionsList  = new List <Mission>();
                        var missionIndex  = 0;
                        for (int i = 0; i < numOfMissions; i++)
                        {
                            var missionName   = soldierInfo[6 + missionIndex];
                            var missionStatus = soldierInfo[7 + missionIndex];
                            var mission       = new Mission(missionName, missionStatus);
                            missionsList.Add(mission);
                            missionIndex += 2;
                        }
                        var currentCommando = new Commando(firstName, lastName, id, salary, corps, missionsList);
                        sb.AppendLine(currentCommando.ToString());
                        break;

                    case "Spy":
                        var codeNumber = soldierInfo[4];
                        var currentSpy = new Spy(firstName, lastName, id, codeNumber);
                        sb.AppendLine(currentSpy.ToString());
                        break;
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
                entry = Console.ReadLine();
            }
            Console.WriteLine(sb.ToString().TrimEnd('\n'));
        }
コード例 #23
0
        private string Parse(List <string> input)
        {
            var      soldierType = input[0];
            var      soldierId   = int.Parse(input[1]);
            var      firstName   = input[2];
            var      lastName    = input[3];
            ISoldier soldier     = null;

            if (soldierType == "Private")
            {
                var salary = decimal.Parse(input[4]);
                soldier = new Private(soldierId, firstName, lastName, salary);
            }
            else if (soldierType == "LieutenantGeneral")
            {
                var salary         = decimal.Parse(input[4]);
                var listOfPrivates = new List <IPrivate>();

                for (int i = 5; i < input.Count; i++)
                {
                    IPrivate currentPrivate = (IPrivate)soldiers[int.Parse(input[i])];
                    listOfPrivates.Add(currentPrivate);
                }

                soldier = new LieutenantGeneral(soldierId, firstName, lastName, salary, listOfPrivates);
            }
            else if (soldierType == "Engineer")
            {
                var salary  = decimal.Parse(input[4]);
                var isCorps = Enum.TryParse <Corps>(input[5], out Corps corps);

                if (!isCorps)
                {
                    throw new Exception();
                }

                var repairs = new List <IRepair>();

                for (int i = 6; i < input.Count; i += 2)
                {
                    var repairPart  = input[i];
                    var repairHours = int.Parse(input[i + 1]);
                    var repair      = new Repair(repairPart, repairHours);
                    repairs.Add(repair);
                }

                soldier = new Engineer(soldierId, firstName, lastName, salary, corps, repairs);
            }
            else if (soldierType == "Commando")
            {
                var salary  = decimal.Parse(input[4]);
                var isCorps = Enum.TryParse <Corps>(input[5], out Corps corps);

                if (!isCorps)
                {
                    throw new Exception();
                }

                var missions = new List <IMission>();

                for (int i = 6; i < input.Count; i += 2)
                {
                    var missionName = input[i];
                    var state       = input[i + 1];

                    var isState = Enum.TryParse <State>(state, out State finalState);

                    if (!isState)
                    {
                        continue;
                    }

                    var mission = new Mission(missionName, finalState);
                    missions.Add(mission);
                }

                soldier = new Commando(soldierId, firstName, lastName, salary, corps, missions);
            }
            else if (soldierType == "Spy")
            {
                var codeNumber = int.Parse(input[4]);
                soldier = new Spy(soldierId, firstName, lastName, codeNumber);
            }

            soldiers.Add(soldierId, soldier);
            return(soldier.ToString());
        }
コード例 #24
0
        public void Run()
        {
            while (true)
            {
                string input = Console.ReadLine();
                if (input == "End")
                {
                    break;
                }

                string[] inputArgs = input.Split();
                string   type      = inputArgs[0];
                int      id        = int.Parse(inputArgs[1]);
                string   firstName = inputArgs[2];
                string   lastName  = inputArgs[3];
                decimal  salary    = decimal.Parse(inputArgs[4]);

                if (type == "Private")
                {
                    IPrivate privateSoldier = new Private(id, firstName, lastName, salary);
                    this.soldiers.Add(privateSoldier);
                }
                else if (type == "LieutenantGeneral")
                {
                    ILieutenantGeneral lieutenantGeneral = new LieutenantGeneral(id, firstName, lastName, salary);
                    for (int i = 5; i < inputArgs.Length; i++)
                    {
                        int      priv           = int.Parse(inputArgs[i]);
                        IPrivate privateSoldier = (IPrivate)this.soldiers.FirstOrDefault(x => x.Id == priv);

                        if (privateSoldier != null)
                        {
                            lieutenantGeneral.Privates.Add(privateSoldier);
                        }
                    }
                    soldiers.Add(lieutenantGeneral);
                }
                else if (type == "Engineer")
                {
                    string corpsAsString = inputArgs[5];
                    if (!Enum.TryParse(corpsAsString, out Corps corps))
                    {
                        continue;
                    }
                    IEngineer engineer = new Engineer(id, firstName, lastName, salary, corps);

                    for (int i = 6; i < inputArgs.Length; i += 2)
                    {
                        string  repairPart = inputArgs[i];
                        int     hours      = int.Parse(inputArgs[i + 1]);
                        IRepair repair     = new Repair(repairPart, hours);
                        engineer.Repairs.Add(repair);
                    }
                    soldiers.Add(engineer);
                }
                else if (type == "Commando")
                {
                    string corpsAsString = inputArgs[5];
                    if (!Enum.TryParse(corpsAsString, out Corps corps))
                    {
                        continue;
                    }
                    ICommando commando = new Commando(id, firstName, lastName, salary, corps);

                    for (int i = 6; i < inputArgs.Length; i += 2)
                    {
                        string codeName      = inputArgs[i];
                        string stateAsString = inputArgs[i + 1];

                        if (!Enum.TryParse(stateAsString, out State state))
                        {
                            continue;
                        }

                        Mission mission = new Mission(codeName, state);
                        commando.Missions.Add(mission);
                    }
                    soldiers.Add(commando);
                }
                else if (type == "Spy")
                {
                    int  codeNumber = int.Parse(inputArgs[4]);
                    ISpy spy        = new Spy(id, firstName, lastName, codeNumber);
                    soldiers.Add(spy);
                }
            }

            foreach (var soldier in soldiers)
            {
                Console.WriteLine(soldier);
            }
        }
コード例 #25
0
 public void Add(IPrivate soldier)
 {
     privates.Add(soldier);
 }
コード例 #26
0
 public void AddPrivates(IPrivate newPrivate)
 {
     this.Privates.Add(newPrivate);
 }
 public void AddPrivate(IPrivate @private)
 {
     this.privates.Add(@private);
 }
コード例 #28
0
        public void Run()
        {
            List <ISoldier> soldiers = new List <ISoldier>();

            string input = string.Empty;

            while ((input = Console.ReadLine()) != "End")
            {
                string[] elements = input
                                    .Split(" ", StringSplitOptions.RemoveEmptyEntries)
                                    .ToArray();

                string typeSoldier = elements[0];
                string id          = elements[1];
                string firstName   = elements[2];
                string lastName    = elements[3];

                ISoldier soldier = null;

                if (typeSoldier == "Private")
                {
                    decimal salary = decimal.Parse(elements[4]);

                    soldier = new Private(id, firstName, lastName, salary);
                }
                else if (typeSoldier == "LieutenantGeneral")
                {
                    decimal salary = decimal.Parse(elements[4]);

                    soldier = new LieutenantGeneral(id, firstName, lastName, salary);

                    for (int i = 5; i < elements.Length; i++)
                    {
                        string targetId = elements[i];

                        IPrivate @private = (IPrivate)soldiers
                                            .FirstOrDefault(x => x.Id == targetId);

                        ILieutenantGeneral lieutenantGeneral = soldier as ILieutenantGeneral;
                        lieutenantGeneral.AddPrivate(@private);
                    }
                }
                else if (typeSoldier == "Engineer")
                {
                    decimal salary     = decimal.Parse(elements[4]);
                    string  targetCorp = elements[5];

                    bool isCorpValid = Enum.TryParse <Corp>(targetCorp, out Corp corp);
                    if (!isCorpValid)
                    {
                        continue;
                    }

                    soldier = new Engineer(id, firstName, lastName, salary, corp);

                    IEngineer engineer = soldier as IEngineer;

                    for (int i = 6; i < elements.Length; i += 2)
                    {
                        string partName = elements[i];
                        int    hours    = int.Parse(elements[i + 1]);

                        IRepair repair = new Repair(partName, hours);
                        engineer.AddRepair(repair);
                    }
                }
                else if (typeSoldier == "Commando")
                {
                    decimal salary     = decimal.Parse(elements[4]);
                    string  targetCorp = elements[5];

                    bool isCorpValid = Enum.TryParse <Corp>(targetCorp, out Corp corp);
                    if (!isCorpValid)
                    {
                        continue;
                    }

                    soldier = new Commando(id, firstName, lastName, salary, corp);

                    ICommando commando = soldier as ICommando;

                    for (int i = 6; i < elements.Length; i += 2)
                    {
                        string codeName           = elements[i];
                        string targetMissionState = elements[i + 1];

                        bool isMissionStateValid = Enum.TryParse <MissionState>(targetMissionState, out MissionState missionState);
                        if (!isMissionStateValid)
                        {
                            continue;
                        }

                        IMission mission = new Mission(codeName, missionState);
                        commando.AddMission(mission);
                    }
                }
                else if (typeSoldier == "Spy")
                {
                    int codeNumber = int.Parse(elements[4]);

                    soldier = new Spy(id, firstName, lastName, codeNumber);
                }

                soldiers.Add(soldier);
            }

            foreach (ISoldier soldier in soldiers)
            {
                Console.WriteLine(soldier);
            }
        }
コード例 #29
0
 public void AddPrivate(IPrivate privateSoldier)
 {
     this._privates.Add(privateSoldier);
 }
コード例 #30
0
 public void AddPrivate(IPrivate priv)
 {
     this.Privates.Add(priv);
 }