Sayısı Belli Olmayan İnput Almak ??
-
hocam kusura bakma koda bakınca faklı anladım ben sanırım istediğimi karşılıyor bir uyarlıyıp deneyeyim. iki gündür kurtarıyorsun beni çok sağol.
-
.net'te reflection çalışırken şöyle bişey yapmıştım ama metodun parametrelerine göre inputları değerlendirdiği için mantığı biraz farklı
class Shell { public Shell() { } Regex regex = new Regex("DRLIMPORT|NEW|EXEC|PRINT|HELP|TOPLA|CLS|KIRVELI|ABOUT"); Commands command = new Commands(); public void Start() { Console.WriteLine("\n\n**********"); Console.WriteLine(Environment.OSVersion); Console.WriteLine(Environment.MachineName); Console.WriteLine("\nKomutları görmek için HELP yazınız...\nSistemden çıkış için EXIT yazınız!"); Console.WriteLine("**********"); for (; ; ) { Console.Write("\n{0} # ",Environment.UserName); string komut = Console.ReadLine(); string[] gelen = komut.Split(new char[1] { ' ' }); if (regex.IsMatch(gelen[0].ToUpper())) { Type tip = typeof(Commands); object instance = Activator.CreateInstance(tip); MethodInfo info = tip.GetMethod(gelen[0].ToUpper()); ParameterInfo[] pInfos = tip.GetMethod(gelen[0].ToUpper()).GetParameters(); object[] parameters = new object[pInfos.Count()]; int i = 0; if (pInfos.Count() == 0) { info.Invoke(instance, null); } else { try { foreach (ParameterInfo pInfo in pInfos) { parameters[i] = gelen[i + 1]; i++; } info.Invoke(instance, parameters); } catch (Exception exp) { Console.WriteLine("Hatalı Parametre Girdiniz.\n{0}",exp.Message); } } } else if(gelen[0].ToUpper() == "EXİT" || gelen[0].ToUpper() == "EXIT") { break; } else { Console.WriteLine("Hatalı Komut Girdiniz!!!"); } } Exit(); }
Toplam Hit: 2419 Toplam Mesaj: 13