static void Main(string[] args) { if (new List<string>(args).Contains("--RunDiagnostics")) { Console.Clear(); Dictionary<string, List<string>> diags = new Dictionary<string, List<string>>(); foreach (Type t in Utility.LocateTypeInstances(typeof(IDiagnosable))) { Object obj = null; foreach (MethodInfo mi in t.GetMethods(BindingFlags.Public | BindingFlags.Static | BindingFlags.Instance)) { if (mi.GetCustomAttributes(typeof(DiagnosticFunctionAttribute), false).Length > 0) { DiagnosticFunctionAttribute att = ((DiagnosticFunctionAttribute)mi.GetCustomAttributes(typeof(DiagnosticFunctionAttribute), false)[0]); Delegate del = null; if (mi.IsStatic) { del = Delegate.CreateDelegate(typeof(DiagnosticFunctionAttribute.DiagnosticsDelegate), mi); } else { if (obj == null) obj = t.GetConstructor(Type.EmptyTypes).Invoke(null); del = DiagnosticFunctionAttribute.DiagnosticsDelegate.CreateDelegate(t, obj, mi.Name); } List<string> tmp = ((DiagnosticFunctionAttribute.DiagnosticsDelegate)del).Invoke(); if (tmp != null) { string name = att.GroupName; if (diags.ContainsKey(name)) { tmp.AddRange((List<string>)diags[name]); diags.Remove(name); diags.Add(name, tmp); } else diags.Add(name, tmp); } } } } Console.WriteLine("Diagnostics Results:"); foreach (string key in diags.Keys) { Console.WriteLine(key + ":"); foreach (string line in diags[key]) Console.WriteLine(string.Format("\t{0}", line)); } return; } Thread.CurrentThread.Name = "MainThread"; Console.TreatControlCAsInput = false; Console.CancelKeyPress += new ConsoleCancelEventHandler(Console_CancelKeyPress); _service = new ServerService(args); _service.WaitForExit(); }
static void Main(string[] args) { if (new List <string>(args).Contains("--RunDiagnostics")) { Console.Clear(); Dictionary <string, List <string> > diags = new Dictionary <string, List <string> >(); foreach (Type t in Utility.LocateTypeInstances(typeof(IDiagnosable))) { Object obj = null; foreach (MethodInfo mi in t.GetMethods(BindingFlags.Public | BindingFlags.Static | BindingFlags.Instance)) { if (mi.GetCustomAttributes(typeof(DiagnosticFunctionAttribute), false).Length > 0) { DiagnosticFunctionAttribute att = ((DiagnosticFunctionAttribute)mi.GetCustomAttributes(typeof(DiagnosticFunctionAttribute), false)[0]); Delegate del = null; if (mi.IsStatic) { del = Delegate.CreateDelegate(typeof(DiagnosticFunctionAttribute.DiagnosticsDelegate), mi); } else { if (obj == null) { obj = t.GetConstructor(Type.EmptyTypes).Invoke(null); } del = DiagnosticFunctionAttribute.DiagnosticsDelegate.CreateDelegate(t, obj, mi.Name); } List <string> tmp = ((DiagnosticFunctionAttribute.DiagnosticsDelegate)del).Invoke(); if (tmp != null) { string name = att.GroupName; if (diags.ContainsKey(name)) { tmp.AddRange((List <string>)diags[name]); diags.Remove(name); diags.Add(name, tmp); } else { diags.Add(name, tmp); } } } } } Console.WriteLine("Diagnostics Results:"); foreach (string key in diags.Keys) { Console.WriteLine(key + ":"); foreach (string line in diags[key]) { Console.WriteLine(string.Format("\t{0}", line)); } } return; } Thread.CurrentThread.Name = "MainThread"; Console.TreatControlCAsInput = false; Console.CancelKeyPress += new ConsoleCancelEventHandler(Console_CancelKeyPress); _service = new ServerService(args); _service.WaitForExit(); }