Exemplo n.º 1
0
        static void Main(string[] args)
        {
            if (!File.Exists("NLog.config"))
            {
                System.Console.Error.WriteLine("Could not found NLog.config, terminating");
                return;
            }

            var originalOut = System.Console.Out;
            System.Console.SetOut(TextWriter.Null);
            
            var installer = new Installer();
            var container = new WindsorContainer().Install(new CommonInstaller());
            installer.Install(container);

            var settingsProvider = container.Resolve<ISettingsProvider>();
            var parser = container.Resolve<IBirthNumberParser>();
            
            var inputArguments = new InputArguments(settingsProvider, parser);
            if (CommandLine.Parser.Default.ParseArguments(args, inputArguments))
            {
                var errors = inputArguments.Validate().ToList();
                if (errors.Any())
                {
                    System.Console.Error.WriteLine("Program could not create any request due to the following input errors:");
                    System.Console.Error.WriteLine();
                    System.Console.Error.WriteLine(string.Join(Environment.NewLine, errors));

                    return;
                }
            }
            else
            {
                return;
            }

            var inputSettingsProvider = new InputSettingsProvider(inputArguments);
            container.Register(Component.For<ISettingsProvider>().Instance(inputSettingsProvider).IsDefault().Named("InputSettingsProvider"));

            var typeHandlerSelector = container.Resolve<ITypeHandlerSelector>();
            var handler = typeHandlerSelector.SelectTypeHandler(inputArguments.Type);
            handler.HandleTypeAsync(inputArguments, originalOut).Wait();
        }