Exemple #1
0
 public Types.Type GetGenericTypeParameter(string name)
 {
     return(GenericTypeParameters
            .Select((parameter, index) => new { parameter, index })
            .Where(pair => pair.parameter.Name == name)
            .Select(pair => TypeArguments[pair.index])
            .FirstOrDefault());
 }
Exemple #2
0
        private void GetDeclarationString(StringBuilder sb, bool? @unsafe)
        {
            if (Parameters.Any(p => p.Type.IsPointer) || ReturnType.IsPointer || @unsafe.HasValue && @unsafe.Value)
            {
                sb.Append("unsafe ");
            }

            sb.Append(ReturnType);
            sb.Append(" ");

            sb.Append(Name);
            if (GenericTypeParameters.Count != 0)
            {
                sb.Append("<");
                var genericParameterNames = GenericTypeParameters.Select(p => p.Name);
                var genericParameterList  = string.Join(", ", genericParameterNames);
                sb.Append(genericParameterList);
                sb.Append(">");
            }
        }
Exemple #3
0
        //-----------------------------------------------------------------------------------------------------------------------------------------------------

        public string MakeGenericName(string openBracket, string closeBracket, string commaSeparator)
        {
            if (!IsGenericType)
            {
                return(this.Name);
            }

            if (IsGenericTypeDefinition)
            {
                return(
                    this.Name +
                    openBracket +
                    string.Join(commaSeparator, GenericTypeParameters.Select(t => t.Name)) +
                    closeBracket);
            }
            else
            {
                return(
                    this.Name +
                    openBracket +
                    string.Join(commaSeparator, GenericTypeArguments.Select(t => t.MakeGenericName(openBracket, closeBracket, commaSeparator))) +
                    closeBracket);
            }
        }