/// <summary> /// Match the type parameter at the given index. /// </summary> /// <remarks> /// The index can be either positive or negative to allow for comparing against first or last parameters /// </remarks> /// <param name="parameter">The parameter, maybe a positive or negative <see cref="Index" /></param> /// <param name="type">The type of the parameter</param> /// <returns></returns> public RestfulApiMethodBuilder MatchParameterType(Index parameter, INamedTypeSymbol type) { if (!_parameters.TryGetValue(parameter, out var item)) { item = _parameters[parameter] = DefaultMatcher(parameter); } _parameters[parameter] = new RestfulApiParameterMatcher( parameter, item.NameMatch, item.Names, ApiConventionTypeMatchBehavior.AssignableFrom, type ); return(this); }
/// <summary> /// Matched on the names of the parameter at the given index /// </summary> /// <remarks> /// The index can be either positive or negative to allow for comparing against first or last parameters /// </remarks> /// <param name="parameter">The parameter, maybe a positive or negative <see cref="Index" /></param> /// <param name="value">The first name</param> /// <param name="values">Any additional names</param> /// <returns></returns> public RestfulApiMethodBuilder MatchParameterName(Index parameter, string value, params string[] values) { if (!_parameters.TryGetValue(parameter, out var item)) { item = _parameters[parameter] = DefaultMatcher(parameter); } _parameters[parameter] = new RestfulApiParameterMatcher( parameter, ApiConventionNameMatchBehavior.Exact, new[] { value }.Concat(values).ToArray(), item.TypeMatch, item.Type ); return(this); }
/// <summary> /// Match only if a parameter exists at the given index /// </summary> /// <remarks> /// The index can be either positive or negative to allow for comparing against first or last parameters /// </remarks> /// <param name="parameter">The parameter, maybe a positive or negative <see cref="Index" /></param> /// <returns></returns> public RestfulApiMethodBuilder HasParameter(Index parameter) { if (!_parameters.TryGetValue(parameter, out var item)) { item = _parameters[parameter] = DefaultMatcher(parameter); } _parameters[parameter] = new RestfulApiParameterMatcher( parameter, item.NameMatch, item.Names.Length > 0 ? item.Names : Array.Empty <string>(), item.TypeMatch, item.Type ); return(this); }