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"); } } }