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