protected override StringBuilder AppendParameter(StringBuilder buf, ParameterDefinition parameter)
        {
            if (parameter.ParameterType is ByReferenceType && parameter.IsOut)
            {
                //no notion of out -> mark with attribute to distinguish in other languages
                buf.Append("[Runtime::InteropServices::Out] ");
            }

            if (parameter.HasCustomAttributes)
            {
                var isParams = parameter.CustomAttributes.Any(ca => ca.AttributeType.Name == "ParamArrayAttribute");
                if (isParams)
                {
                    buf.AppendFormat("... ");
                }
            }

            buf.Append(GetTypeNameWithOptions(parameter.ParameterType, !AppendHatOnReturn)).Append(" ");
            buf.Append(parameter.Name);

            if (parameter.HasDefault && parameter.IsOptional && parameter.HasConstant)
            {
                buf.AppendFormat(" = {0}", MDocUpdater.MakeAttributesValueString(parameter.Constant, parameter.ParameterType));
            }

            return(buf);
        }
 private StringBuilder AppendParameter(StringBuilder buf, ParameterDefinition parameter)
 {
     if (parameter.ParameterType is ByReferenceType)
     {
         if (parameter.IsOut)
         {
             buf.Append("out ");
         }
         else
         {
             buf.Append("ref ");
         }
     }
     if (parameter.HasCustomAttributes)
     {
         var isParams = parameter.CustomAttributes.Any(ca => ca.AttributeType.Name == "ParamArrayAttribute");
         if (isParams)
         {
             buf.AppendFormat("params ");
         }
     }
     buf.Append(GetTypeName(parameter.ParameterType, new DynamicParserContext(parameter))).Append(" ");
     buf.Append(parameter.Name);
     if (parameter.HasDefault && parameter.IsOptional && parameter.HasConstant)
     {
         buf.AppendFormat(" = {0}", MDocUpdater.MakeAttributesValueString(parameter.Constant, parameter.ParameterType));
     }
     return(buf);
 }
        private StringBuilder AppendParameter(StringBuilder buf, ParameterDefinition parameter)
        {
            TypeReference parameterType = parameter.ParameterType;

            if (parameterType is ByReferenceType byReferenceType)
            {
                if (parameter.IsOut)
                {
                    buf.Append("out ");
                }
                else if (parameter.IsIn &&
                         parameter.CustomAttributes.Any(ca => ca.AttributeType.FullName == "System.Runtime.CompilerServices.IsReadOnlyAttribute"))
                {
                    buf.Append("in ");
                }
                else
                {
                    buf.Append("ref ");
                }

                parameterType = byReferenceType.ElementType;
            }
            if (parameter.HasCustomAttributes)
            {
                var isParams = parameter.CustomAttributes.Any(ca => ca.AttributeType.Name == "ParamArrayAttribute");
                if (isParams)
                {
                    buf.AppendFormat("params ");
                }
            }
            buf.Append(GetTypeName(parameterType, new DynamicParserContext(parameter))).Append(" ");
            buf.Append(parameter.Name);
            if (parameter.HasDefault && parameter.IsOptional && parameter.HasConstant)
            {
                var ReturnVal = MDocUpdater.MakeAttributesValueString(parameter.Constant, parameter.ParameterType);
                buf.AppendFormat(" = {0}", ReturnVal == "null" ? "default" : ReturnVal);
            }
            return(buf);
        }