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()); }
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(">"); } }
//----------------------------------------------------------------------------------------------------------------------------------------------------- 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); } }