static void Main(string[] args) { ///Fields type = typeof(BlackBoxInteger); //FieldInfo[] info = type.GetFields(BindingFlags.Public | BindingFlags.Static | BindingFlags.Instance | BindingFlags.NonPublic); instance = (BlackBoxInteger)Activator.CreateInstance(type, true); ///Constructor //ConstructorInfo ctor = type.GetConstructor(new[] { typeof(int) }); //object inst = ctor.Invoke(new object[] { 10 }); ///Methods MethodInfo[] methods = type.GetMethods(BindingFlags.Public | BindingFlags.Static | BindingFlags.Instance | BindingFlags.NonPublic); while (true) { string input = Console.ReadLine(); if (input == "END") { return; } string cmd = input.Substring(0, input.IndexOf("_")); string argument = input.Substring(input.IndexOf("_") + 1); Console.WriteLine(MethodInvoker(cmd, argument)); } }
static void Main(string[] args) { Type blackBox = typeof(BlackBoxInteger); ConstructorInfo[] constructorInfo = blackBox.GetConstructors(BindingFlags.NonPublic | BindingFlags.Instance); BlackBoxInteger instance = (BlackBoxInteger)constructorInfo[1].Invoke(new object[0]); string[] command = Console.ReadLine().Split('_').ToArray(); while (command[0] != "END") { int number = int.Parse(command[1]); MethodInfo method = blackBox.GetMethod(command[0], BindingFlags.NonPublic | BindingFlags.Instance); method.Invoke(instance, new object[1] { number }); FieldInfo field = blackBox.GetField("innerValue", BindingFlags.NonPublic | BindingFlags.Instance); Console.WriteLine(field.GetValue(instance)); command = Console.ReadLine().Split('_').ToArray(); } }