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; } }