Esempio n. 1
0
        public static void Main(string[] args)
        {
            //charge plein de .dll dans un dossier, pour chaque fichier on va voir dedans, une dll en plus pour chaque operation
            Console.WriteLine("=== Bienvenue dans la super calculatrice 3000 ===");
            Console.WriteLine("Les differentes commandes possibles :\nsin, cos, tan, max, min, sum, sub, div, mult");
            Console.WriteLine("Vous devez laisser un espace entre la commande et le parametre");
            Console.WriteLine("Il faut laisser un espace entre les parametres, par exemple : sum 2 4 6 pour faire " +
                              "la somme de 2, 4 et 6");
            Console.WriteLine("Vous ne pouvez fournir qu'un parametre pour sin, cos et tan");
            Console.WriteLine("Vous pouvez quitter le programme a tout moment en tapant quit\n\n");

            // The output is bin/debug so we have to get back once to the project path and one last time to get back to the solution path
            string solutionpath = Path.GetDirectoryName(Path.GetDirectoryName(Path.GetDirectoryName(System.IO.Directory.GetCurrentDirectory())));

            // Take all libraries in the path
            string[] filePaths = Directory.GetFiles(solutionpath, "*.dll");

            string input = Console.ReadLine();

            bool valid_input = false;

            //bool valid = false;
            while (input != "quit")
            {
                string[] splitinput = input.Split(new Char[] { ' ' });

                if (splitinput[0] != "")
                {
                    Console.WriteLine("test2");
                    AssemblySearch result;
                    foreach (string lib in filePaths)
                    {
                        // Load assemblies .dll
                        Assembly assembly = Assembly.LoadFrom(lib);
                        result      = new AssemblySearch(assembly, valid_input, splitinput);
                        valid_input = result.Compute();
                        //Console.WriteLine(valid_input);
                    }

                    if (valid_input == false)
                    {
                        Console.WriteLine("Veuillez entrer une fonction valide");
                    }
                }
                else
                {
                    Console.WriteLine("Veuillez entrer une commande et un argument");
                }

                input       = Console.ReadLine();
                valid_input = false;
            }
        }
        public override string ToString()
        {
            bool valid_input = false;

            List <string> values = this._splitinput.ToList();

            // Remove the user's command to only keep arguments
            values.RemoveAt(0);

            int    counterrors = 0;
            double number;

            // Check if the parameters are numbers
            foreach (string val in values)
            {
                if (Double.TryParse(val, out number) == false)
                {
                    counterrors += 1;
                }
            }

            if (counterrors > 0)
            {
                return("Veuillez entrer un/des nombre(s) en parametre");
            }

            else
            {
                if (this._splitinput[0] != "" || this._splitinput[1] != "")
                {
                    List <bool>    valid_list  = new List <bool>();
                    int            valid_count = 0;
                    AssemblySearch result;
                    foreach (string lib in this._filePaths)
                    {
                        // Load assemblies .dll
                        Assembly assembly = Assembly.LoadFrom(lib);
                        result      = new AssemblySearch(assembly, valid_input, this._splitinput);
                        valid_input = result.Compute();
                        valid_list.Add(valid_input);
                    }

                    foreach (bool valid in valid_list)
                    {
                        if (valid == true)
                        {
                            valid_count += 1;
                        }
                    }
                    if (valid_count == 0)
                    {
                        return("Veuillez entrer une fonction valide");
                    }
                    return("");
                }
                else if (this._splitinput.Length == 1)
                {
                    return("Veuillez entrer un argument");
                }
                else
                {
                    return("Veuillez entrer une commande et un argument");
                }
            }
        }