private static void AppendTypeArguments(GenericType type, StringBuilder buffer) { if (!(type.GetArguments().Count == 0)) { buffer.Append('<'); for (int i = 0; i < type.GetArguments().Count; i++) { if (i > 0) { buffer.Append(", "); } int wildcard = type.GetWildcards()[i]; switch (wildcard) { case GenericType.Wildcard_Unbound: { buffer.Append('?'); break; } case GenericType.Wildcard_Extends: { buffer.Append("? extends "); break; } case GenericType.Wildcard_Super: { buffer.Append("? super "); break; } } GenericType genPar = type.GetArguments()[i]; if (genPar != null) { buffer.Append(GetGenericCastTypeName(genPar)); } } buffer.Append(">"); } }
private static void ParseArgumentsList(string value, GenericType type) { if (value == null) { return; } while (value.Length > 0) { string typeStr = GetNextType(value); int len = typeStr.Length; int wildcard = Wildcard_No; switch (typeStr[0]) { case '*': { wildcard = Wildcard_Unbound; break; } case '+': { wildcard = Wildcard_Extends; break; } case '-': { wildcard = Wildcard_Super; break; } } type.GetWildcards().Add(wildcard); if (wildcard != Wildcard_No) { typeStr = Sharpen.Runtime.Substring(typeStr, 1); } type.GetArguments().Add(typeStr.Length == 0 ? null : new GenericType(typeStr)); value = Sharpen.Runtime.Substring(value, len); } }