Ntreev.Library.Commands.CommandLineParser.Parse C# (CSharp) Méthode

Parse() public méthode

public Parse ( string commandLine ) : bool
commandLine string
Résultat bool
        public bool Parse(string commandLine)
        {
            var match = Regex.Match(commandLine, @"^((""[^""]*"")|(\S+))");
            var name = match.Value.Trim(new char[] { '\"', });

            if (File.Exists(name) == true)
                name = Process.GetCurrentProcess().ProcessName;

            if (this.name != name)
                throw new ArgumentException(string.Format(Resources.InvalidCommandName_Format, name));

            var arguments = commandLine.Substring(match.Length).Trim();

            if (arguments == this.HelpName)
            {
                this.PrintUsage();
                return false;
            }
            else if (arguments == this.VersionName)
            {
                this.PrintVersion();
                return false;
            }
            else
            {
                var descriptors = CommandDescriptor.GetSwitchDescriptors(this.instance).Where(item => this.IsSwitchVisible(item));
                var helper = new SwitchHelper(descriptors);
                helper.Parse(this.instance, arguments);
                return true;
            }
        }

Usage Example

        static void Main(string[] args)
        {
            var settings = new Settings();
            var parser = new CommandLineParser(typeof(Settings));

            try
            {
                if (parser.Parse(Environment.CommandLine) == false)
                {
                    Environment.Exit(1);
                }

                Console.WriteLine("use cache : {0}", settings.UseCache);
                Console.WriteLine("cache size : {0}", settings.CacheSize);
                foreach (var item in settings.Libraries)
                {
                    Console.WriteLine("library loaded : {0}", item);
                }

                Console.WriteLine("service port : {0}", settings.Port);
                Console.WriteLine("service workingPath : {0}", new DirectoryInfo(settings.WorkingPath).FullName);
                Console.WriteLine("{0} service is started.", settings.ServiceName);
                Console.WriteLine("press 'Q' to quit");

                while (Console.Read() == (int)ConsoleKey.Q)
                    ;
                Console.WriteLine("{0} service is finshed.", settings.ServiceName);

            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                Environment.Exit(2);
            }
        }