private void LoadValues(IParameterCollection parameterCollection, TypeDefinition commandType) { var valueProperties = commandType.GetAllProperties() .WithAttribute(CommandLineParserTypeNames.ValueAttributeFullName) .Where(x => !x.GetAttribute(CommandLineParserTypeNames.ValueAttributeFullName).GetPropertyValueOrDefault <bool>(s_Hidden)); foreach (var property in valueProperties) { var valueAttribute = property.GetAttribute(CommandLineParserTypeNames.ValueAttributeFullName); var position = (int)valueAttribute.ConstructorArguments.Single().Value; var parameter = parameterCollection.AddPositionalParameter(position); parameter.Description = valueAttribute.GetPropertyValueOrDefault <string?>(s_HelpText); parameter.Required = valueAttribute.GetPropertyValueOrDefault <bool>(s_Required); parameter.DefaultValue = GetDefaultValue(property, valueAttribute); parameter.AcceptedValues = GetAcceptedValues(property); parameter.InformationalName = valueAttribute.GetPropertyValueOrDefault <string?>(s_MetaName); parameter.ValuePlaceHolderName = valueAttribute.GetPropertyValueOrDefault <string?>(s_MetaValue); } }
/// <summary> /// Adds a new positional parameter to the application /// </summary> public PositionalParameterDocumentation AddPositionalParameter(int position) => m_Parameters.AddPositionalParameter(position);