示例#1
0
        public string GetString(ParameterSignature signature, ParameterEmitOptions option)
        {
            var temp = new StringWriter();

            Write(temp, signature, option);
            return(temp.ToString());
        }
示例#2
0
        private IEnumerable <string> GetParameterTokens(ParameterSignature parameter, ParameterEmitOptions options)
        {
            if (parameter.IsOutParameter)
            {
                if (options.HasFlag(ParameterEmitOptions.Keywords))
                {
                    yield return("out");
                }
            }
            else if (parameter.IsRefParameter)
            {
                if (options.HasFlag(ParameterEmitOptions.Keywords))
                {
                    yield return("ref");
                }
            }

            if (!options.HasFlag(ParameterEmitOptions.Invocation))
            {
                if (parameter.IsParams)
                {
                    yield return("params");
                }

                yield return(_typeEmitter.GetString(parameter.ParameterType));
            }

            if (options.HasFlag(ParameterEmitOptions.Name))
            {
                yield return(_keywords.Contains(parameter.Name)
                    ? $"@{parameter.Name}"
                    : parameter.Name);
            }

            if (parameter.IsOptional)
            {
                if (!options.HasFlag(ParameterEmitOptions.Invocation) &&
                    options.HasFlag(ParameterEmitOptions.Optional))
                {
                    yield return("=");

                    yield return(GetDefaultValue(parameter, _typeEmitter));
                }
            }
        }
示例#3
0
 public void Write(TextWriter writer, ParameterSignature parameter, ParameterEmitOptions options)
 {
     writer.Write(string.Join(" ", GetParameterTokens(parameter, options)));
 }