/// <summary> /// Reflects on all public methos in the given StateLoader, registers them with dbf /// </summary> /// <param name="dbf"></param> /// <param name="sl"></param> public static void RegisterStateLoader(DBFiller dbf, StateLoader sl) { var methods = sl.GetType().GetMethods(); var alphabetic = methods.Where(m => m.Name.Contains('_')).ToList(); alphabetic.Sort((t1, t2) => { return(t1.Name.CompareTo(t2.Name)); }); var eventInfo = dbf.GetType().GetEvent("OnCreationLoadState"); foreach (var m in alphabetic) { var d = Delegate.CreateDelegate(eventInfo.EventHandlerType, sl, m); eventInfo.AddEventHandler(dbf, d); } }
public static void Main() { _config = new DBFillerConfig(); MongoDatabaseManager _databaseManager = new MongoDatabaseManager(); _databaseManager.ResetDB(); //_databaseManager.DeleteCollection("all"); //_databaseManager.ClearDatabase(); DBFiller dbf = new DBFiller(_config, _databaseManager); Helpers.RegisterStateLoader(dbf, new StateLoader()); //((MongoDatabaseManager)_databaseManager).ClearCollection<ShipModel>("all"); var t = dbf.FillDB(); try { t.Wait();//This occasionally throws missing key exceptions. Probably a race condition. Just try running again. } catch (Exception e) { } if (t.Exception != null) { throw t.Exception; } dbf.MockServer.KillThreads(); ConsoleManager.WriteLine("\n\n\nDatabase filled. You may close this window.", ConsoleMessageType.Notification); Console.ReadKey(); return; }