示例#1
0
文件: Parameter.cs 项目: serra/CLAP
        internal Parameter(ParameterInfo parameter)
        {
            Debug.Assert(parameter != null);

            Names = new List<string>();

            // Names are stored as lower-case.
            // The first available name is the parameters's original name.
            //
            Names.Add(parameter.Name.ToLowerInvariant());

            ParameterInfo = parameter;

            Required = parameter.HasAttribute<RequiredAttribute>();

            if (parameter.HasAttribute<DefaultValueAttribute>())
            {
                Default = parameter.GetAttribute<DefaultValueAttribute>().DefaultValue;
            }

            if (parameter.HasAttribute<DefaultProviderAttribute>())
            {
                DefaultProvider = (DefaultProvider)Activator.CreateInstance(
                    parameter.GetAttribute<DefaultProviderAttribute>().DefaultProviderType);
            }

            if (parameter.HasAttribute<DescriptionAttribute>())
            {
                Description = parameter.GetAttribute<DescriptionAttribute>().Description;
            }

            if (parameter.HasAttribute<AliasesAttribute>())
            {
                Names.AddRange(parameter.GetAttribute<AliasesAttribute>().Aliases.ToLowerInvariant().CommaSplit());
            }

            if (parameter.HasAttribute<SeparatorAttribute>())
            {
                Separator = parameter.GetAttribute<SeparatorAttribute>().Separator;
            }
        }