using System.Linq; using ArcToolkitCLI.Commands; using CommandLine; namespace ArcToolkitCLI { internal class Program { private static int Main(string[] args) { var commandTypes = typeof(Program).Assembly.GetTypes() .Where(t => !t.IsInterface && !t.IsAbstract && typeof(ICommand).IsAssignableFrom(t)).ToArray(); return Parser.Default.ParseArguments(args, commandTypes) .MapResult((object t) => ((ICommand) t).Run(), errs => 1); } } }