public static Specification FromProperty(PropertyInfo property) { var attrs = property.GetCustomAttributes(true); var oa = attrs.OfType <OptionAttribute>(); if (oa.Count() == 1) { var spec = OptionSpecification.FromAttribute(oa.Single(), property.PropertyType, ReflectionHelper.GetNamesOfEnum(property.PropertyType)); if (spec.ShortName.Length == 0 && spec.LongName.Length == 0) { return(spec.WithLongName(property.Name.ToLowerInvariant())); } return(spec); } var va = attrs.OfType <ValueAttribute>(); if (va.Count() == 1) { return(ValueSpecification.FromAttribute(va.Single(), property.PropertyType, property.PropertyType.GetTypeInfo().IsEnum ? Enum.GetNames(property.PropertyType) : Enumerable.Empty <string>())); } throw new InvalidOperationException(); }
public static OptionSpecification WithLongName(this OptionSpecification specification, string newLongName) { return(new OptionSpecification( specification.ShortName, newLongName, specification.Required, specification.SetName, specification.Min, specification.Max, specification.Separator, specification.DefaultValue, specification.HelpText, specification.MetaValue, specification.EnumValues, specification.ConversionType, specification.TargetType, specification.Group, specification.Hidden)); }
public static string UniqueName(this OptionSpecification specification) { return(specification.ShortName.Length > 0 ? specification.ShortName : specification.LongName); }
public static NameInfo FromOptionSpecification(this OptionSpecification specification) { return(new NameInfo( specification.ShortName, specification.LongName)); }