Esempio n. 1
0
        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();
        }
Esempio n. 2
0
 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));
 }
Esempio n. 3
0
 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));
 }