public static void HandleMemberType(StringBuilder code, Type memberType, Action <Type> enqueueType = null) { if (memberType == typeof(DateTime?) || memberType == typeof(DateTime)) { code.Append("String"); // şu an için string, JSON tarafında ISO string formatında tarihler gidiyor, // ama bunu daha sonra JSON.parse, JSON.stringify'ı değiştirip düzelteceğiz. return; } if (GeneratorUtils.IsSimpleType(memberType)) { code.Append(memberType.Name); return; } var nullableType = Nullable.GetUnderlyingType(memberType); if (nullableType != null && GeneratorUtils.IsSimpleType(nullableType)) { code.Append(nullableType.Name); code.Append("?"); return; } if (nullableType != null) { HandleMemberType(code, nullableType, enqueueType); code.Append("?"); return; } // TODO: Bunlar özel durumlar, attribute la daha sonra halledelim! if (memberType == typeof(SortBy[])) { code.Append("SortBy[]"); return; } if (memberType == typeof(Stream)) { code.Append("byte[]"); return; } if (memberType == typeof(Object)) { code.Append("Object"); return; } if (memberType.IsArray) { code.Append("List<"); HandleMemberType(code, memberType.GetElementType(), enqueueType); code.Append(">"); return; } if (memberType.IsGenericType && (memberType.GetGenericTypeDefinition() == typeof(List <>) || memberType.GetGenericTypeDefinition() == typeof(HashSet <>))) { code.Append("List<"); HandleMemberType(code, memberType.GenericTypeArguments[0], enqueueType); code.Append(">"); return; } if (memberType.IsGenericType && memberType.GetGenericTypeDefinition() == typeof(Dictionary <,>)) { code.Append("JsDictionary<"); HandleMemberType(code, memberType.GenericTypeArguments[0], enqueueType); code.Append(","); HandleMemberType(code, memberType.GenericTypeArguments[1], enqueueType); code.Append(">"); return; } if (enqueueType != null) { enqueueType(memberType); } code.Append(MakeFriendlyName(memberType)); }
public static void HandleMemberType(StringBuilder code, Type memberType, Action <Type> enqueueType = null) { if (GeneratorUtils.IsSimpleType(memberType)) { code.Append(memberType.Name); return; } var nullableType = Nullable.GetUnderlyingType(memberType); if (nullableType != null && GeneratorUtils.IsSimpleType(nullableType)) { code.Append(nullableType.Name); code.Append("?"); return; } if (nullableType != null) { HandleMemberType(code, nullableType, enqueueType); code.Append("?"); return; } // TODO: Bunlar özel durumlar, attribute la daha sonra halledelim! if (memberType == typeof(SortBy[])) { code.Append("List<String>"); return; } if (memberType == typeof(HashSet <string>)) { code.Append("List<String>"); return; } if (memberType == typeof(Dictionary <string, string>)) { code.Append("Dictionary<String, String>"); return; } if (memberType == typeof(Object)) { code.Append("Object"); return; } if (memberType.IsGenericType && memberType.GetGenericTypeDefinition() == typeof(List <>)) { code.Append("List<"); HandleMemberType(code, memberType.GenericTypeArguments[0], enqueueType); code.Append(">"); return; } if (memberType.IsArray) { code.Append("List<"); HandleMemberType(code, memberType.GetElementType(), enqueueType); code.Append(">"); return; } if (enqueueType != null) { enqueueType(memberType); } code.Append(MakeFriendlyName(memberType)); }