public static void DiscoverArguments( IDescriptorContext context, ICollection <ArgumentDefinition> arguments, MemberInfo?member) { if (arguments == null) { throw new ArgumentNullException(nameof(arguments)); } if (member is MethodInfo method) { var processed = new HashSet <NameString>( arguments.Select(t => t.Name)); foreach (ParameterInfo parameter in method.GetParameters()) { if (IsArgumentType(method, parameter)) { ArgumentDefinition argumentDefinition = ArgumentDescriptor .New(context, parameter) .CreateDefinition(); if (processed.Add(argumentDefinition.Name)) { arguments.Add(argumentDefinition); } } } } }
protected void Argument( NameString name, Action <IArgumentDescriptor> argument) { if (argument is null) { throw new ArgumentNullException(nameof(argument)); } name.EnsureNotEmpty(nameof(name)); ParameterInfo parameter = null; Parameters?.TryGetValue(name, out parameter); ArgumentDescriptor descriptor = parameter is null ? Arguments.FirstOrDefault(t => t.Definition.Name.Equals(name)) : Arguments.FirstOrDefault(t => t.Definition.Parameter == parameter); if (descriptor is null) { descriptor = parameter is null ? ArgumentDescriptor.New(Context, name) : ArgumentDescriptor.New(Context, parameter); Arguments.Add(descriptor); } argument(descriptor); }
protected void Argument( NameString name, Action <IArgumentDescriptor> argument) { if (argument == null) { throw new ArgumentNullException(nameof(argument)); } name.EnsureNotEmpty(nameof(name)); ArgumentDescriptor descriptor = Parameters != null && Parameters.TryGetValue(name, out ParameterInfo p) ? ArgumentDescriptor.New(Context, p) : ArgumentDescriptor.New(Context, name); argument(descriptor); ArgumentDefinition definition = descriptor.CreateDefinition(); Definition.Arguments.Add(definition); }