private static EndpointHandlerParameterDeclaration ForAttribute(IParameterBindingSourceAttribute attribute, ParameterInfo parameterInfo, EndpointDeclarationFactoryOptions options)
 {
     return(attribute switch
     {
         FromBodyAttribute => new JsonBodyEndpointParameterDeclaration(parameterInfo.ParameterType, parameterInfo.Name ?? string.Empty),
         IParameterBindingSourceWithNameAttribute attributeWithName => ParameterBinder.GetParameterDeclarationForBindingAttribute(attributeWithName, parameterInfo.Name ?? string.Empty, parameterInfo.ParameterType, parameterInfo.HasDefaultValue, parameterInfo.DefaultValue, options),
         _ => throw new InvalidEndpointSetupException($"Cannot handle IParameterBindingSourceAttribute of {attribute?.GetType()}")
     });
Beispiel #2
0
        public static EndpointHandlerParameterDeclaration GetParameterDeclarationForBindingAttribute(IParameterBindingSourceWithNameAttribute parameterBindingSourceWithNameAttribute, string parameterName, Type type, bool hasDefaultValue, object?defaultValue, EndpointDeclarationFactoryOptions options)
        {
            var parameterNameToBind = parameterBindingSourceWithNameAttribute.Name ?? parameterName;

            var(factory, infos) = GetParameterDeclaration(parameterNameToBind, type, hasDefaultValue, defaultValue, parameterBindingSourceWithNameAttribute.Source, type.IsArray, options);
            return(new SyncEndpointParameterDeclaration(factory, infos));
        }