Пример #1
0
        private static Container setupIocContainer(SetupArgs args)
        {
            var container = new Container();

            container.Register <ILogger>(() => LogManager.GetLogger(nameof(LiteDbApplication)), Lifestyle.Singleton);
            container.Register(() => args, Lifestyle.Singleton);
            container.RegisterPackages(new[] { typeof(LiteDbApplication).Assembly });
            container.RegisterPackages(new[] { args.Assembly });

            container.Verify(VerificationOption.VerifyAndDiagnose);

            return(container);
        }
Пример #2
0
 /// <summary>
 /// Starts the application and blocks the thread until the program exits.
 /// </summary>
 public static void Run(SetupArgs args)
 {
     try
     {
         run(args);
     }
     catch (Exception error)
     {
         MessageBox.Show(error.Message,
                         "Application Error",
                         MessageBoxButtons.OK,
                         MessageBoxType.Error);
     }
 }
Пример #3
0
        private static void run(SetupArgs args)
        {
            var log = setupLogging();

            log.Info("Loading Program");

            using (var application = args.Application = new Application())
            {
                log.Info("Loading Ioc Container");

                using (var container = args.IocContainer = setupIocContainer(args))
                {
                    log.Info("Program is Ready");

                    application.MainForm = container.GetInstance <MainForm>();

                    args.BeforeRunning?.Invoke(args);

                    if (args.OpenFiles?.Length > 0)
                    {
                        var viewModel = args.IocContainer.GetInstance <MainFormModel>();

                        foreach (var connectionString in args.OpenFiles)
                        {
                            try
                            {
                                viewModel.Open(new LiteDatabase(connectionString), connectionString.IndexOf(';') == -1 ?
                                               connectionString :
                                               Regex.Match(connectionString, @"Filename\s*=.*[;$]", RegexOptions.IgnoreCase).ToString().Substring(10).TrimEnd(';'));
                            }
                            catch (Exception error)
                            {
                                MessageBox.Show(error.Message,
                                                "Open File Error",
                                                MessageBoxButtons.OK,
                                                MessageBoxType.Error);
                            }
                        }
                    }

                    application.Run();
                }
            }
        }