internal static CommandLineArgument Create(ParameterInfo parameter) { var ret = PropertyInitializer.CreateInstance <CommandLineArgument>(); ret.Position = parameter.Position; ret.ArgumentType = parameter.ParameterType; ret.Source = parameter; ret.DefaultValue = parameter.HasAttr <DefaultValueAttribute>() ? parameter.Attr <DefaultValueAttribute>().Value : null; ret.IgnoreCase = true; if (parameter.Member.DeclaringType.HasAttr <ArgIgnoreCase>() && parameter.Member.DeclaringType.Attr <ArgIgnoreCase>().IgnoreCase == false) { ret.IgnoreCase = false; } if (parameter.HasAttr <ArgIgnoreCase>() && parameter.Attr <ArgIgnoreCase>().IgnoreCase == false) { ret.IgnoreCase = false; } ret.Aliases.Add(parameter.Name); ret.Metadata.AddRange(parameter.Attrs <IArgMetadata>().AssertAreAllInstanceOf <ICommandLineArgumentMetadata>()); return(ret); }