private void Load() { // Select all the CommandLineParameterAttribute attributes from all the properties on the type and create a command line parameter for it CommandLineParameterAttribute.ForEach(ArgumentType, Add); VerifyPositionalArgumentsInSequence(); // If there are no attributed properties if (Parameters.Count == 0) { // infer them based on the property names CommandLineParameterAttribute.ForEach(ArgumentType, InferCommandLineParameterAttribute, Add); } }