/// <summary> Write a QueryParam XML Element from attributes in a member. </summary> public virtual void WriteQueryParam(System.Xml.XmlWriter writer, System.Reflection.MemberInfo member, QueryParamAttribute attribute, BaseAttribute parentAttribute, System.Type mappedClass) { writer.WriteStartElement( "query-param" ); // Attribute: <name> writer.WriteAttributeString("name", attribute.Name==null ? DefaultHelper.Get_QueryParam_Name_DefaultValue(member) : GetAttributeValue(attribute.Name, mappedClass)); // Attribute: <type> writer.WriteAttributeString("type", attribute.Type==null ? DefaultHelper.Get_QueryParam_Type_DefaultValue(member) : GetAttributeValue(attribute.Type, mappedClass)); WriteUserDefinedContent(writer, member, null, attribute); writer.WriteEndElement(); }
/// <summary> /// The populate metadata. /// </summary> /// <param name="il">The IL Generator</param> /// <param name="metadataLocal"> The metadata local. </param> /// <param name="interfaceMethod"> The interface method. </param> private static void PopulateMetadataParameters(ILGenerator il, LocalBuilder metadataLocal, MethodInfo interfaceMethod) { ParameterInfo[] parameters = interfaceMethod.GetParameters(); Type methodMetaType = typeof(MethodMetadata); foreach (ParameterInfo parameter in parameters) { if (parameter.IsOut) { throw new NotSupportedException(Resources.OutAndOptionalParamsNotSupported); } bool attributeFound = false; HeaderParamAttribute headerAttribute = ReflectionUtils.GetAttribute <HeaderParamAttribute>(parameter); if (headerAttribute != null) { attributeFound = true; ILWriter.AddParameter( il, "AddHeaderParameter", metadataLocal, methodMetaType, headerAttribute.HeaderName, parameter); } QueryParamAttribute queryAttribute = ReflectionUtils.GetAttribute <QueryParamAttribute>(parameter); if (queryAttribute != null) { attributeFound = true; ILWriter.AddParameter( il, "AddQueryParameter", metadataLocal, methodMetaType, queryAttribute.ParameterName, parameter); } FormParamAttribute formAttribute = ReflectionUtils.GetAttribute <FormParamAttribute>(parameter); if (formAttribute != null) { attributeFound = true; ILWriter.AddParameter( il, "AddFormParameter", metadataLocal, methodMetaType, formAttribute.ParameterName, parameter); } PathParamAttribute pathAttribute = ReflectionUtils.GetAttribute <PathParamAttribute>(parameter); if (pathAttribute != null) { attributeFound = true; ILWriter.AddParameter( il, "AddPathParameter", metadataLocal, methodMetaType, pathAttribute.ParameterName, parameter); } if (!attributeFound) { MethodInfo bodySetter = methodMetaType.GetProperty("RequestBody").GetSetMethod(); il.Emit(OpCodes.Ldloc, metadataLocal); il.Emit(OpCodes.Ldarg, parameter.Position + 1); if (parameter.ParameterType.IsValueType) { il.Emit(OpCodes.Box, parameter.ParameterType); } il.Emit(OpCodes.Call, bodySetter); } } }