/// <summary> /// Get the TypeScript text of the CodeTypeReference /// </summary> /// <param name="codeTypeReference">CodeTypeReference to a CLR type</param> /// <returns></returns> public static string MapCodeTypeReferenceToTsText(CodeTypeReference codeTypeReference) { if (codeTypeReference == null) { return(null); } System.Diagnostics.Debug.WriteLine($"parameter.type.BaseType: {codeTypeReference.BaseType} ArgumentCount: {codeTypeReference.TypeArguments.Count}, ArrayRank: {codeTypeReference.ArrayRank}"); System.Diagnostics.Debug.WriteLineIf(codeTypeReference.BaseType == "System.Void", "For this void type :" + codeTypeReference.ToString()); if (IsArrayType(codeTypeReference)) { var rank = codeTypeReference.ArrayRank; if (rank > 1) { return(codeTypeReference.BaseType + new System.Text.StringBuilder().Insert(0, "[]", rank).ToString()); } var elementTypeName = MapCodeTypeReferenceToTsText(codeTypeReference.ArrayElementType); //System.Diagnostics.Debug.Assert(elementTypeName != "void", "Hey"); return($"Array<{elementTypeName}>"); } //if (codeTypeReference.BaseType.Equals("response")) //This must be before the next one //{ // return "HttpResponse<Blob>"; //} if (typeMap.TryGetValue(codeTypeReference.BaseType, out string tsTypeName)) { return(tsTypeName); } if (codeTypeReference.TypeArguments.Count == 0) { if (codeTypeReference is CodeSnipetTypeReference codeSnipetTypeReference) { return(codeSnipetTypeReference.BaseType); } return(codeTypeReference.BaseType); } if (IsKeyValuePairType(codeTypeReference.BaseType)) { System.Diagnostics.Debug.Assert(codeTypeReference.TypeArguments.Count == 2); var keyTypeReferenceText = MapCodeTypeReferenceToTsText(codeTypeReference.TypeArguments[0]); var valueTypeReferenceText = MapCodeTypeReferenceToTsText(codeTypeReference.TypeArguments[1]); return(TsCodeGenerationOptions.Instance.CamelCase ? $"{{key: {keyTypeReferenceText}, value: {valueTypeReferenceText} }}" : $"{{Key: {keyTypeReferenceText}, Value: {valueTypeReferenceText} }}"); } if (codeTypeReference.BaseType.Contains("System.Collections.Generic.Dictionary")) { System.Diagnostics.Debug.Assert(codeTypeReference.TypeArguments.Count == 2); var keyTypeReferenceText = MapCodeTypeReferenceToTsText(codeTypeReference.TypeArguments[0]); var valueTypeReferenceText = MapCodeTypeReferenceToTsText(codeTypeReference.TypeArguments[1]); return(TsCodeGenerationOptions.Instance.CamelCase ? $"{{[id: {keyTypeReferenceText}]: {valueTypeReferenceText} }}" : $"{{[Id: {keyTypeReferenceText}]: {valueTypeReferenceText} }}"); } if (codeTypeReference.BaseType.Contains("System.Tuple")) { return($"{{{MapCodeTypeReferenceCollectionToTupleTsText(codeTypeReference.TypeArguments)}}}"); } if (codeTypeReference.TypeArguments.Count > 0) { var genericTypeName = codeTypeReference.BaseType.Substring(0, codeTypeReference.BaseType.IndexOf('`')); return($"{genericTypeName}<{MapCodeTypeReferenceCollectionToTsText(codeTypeReference.TypeArguments)}>"); } System.Diagnostics.Trace.TraceWarning($"{codeTypeReference.BaseType} is mapped to any."); return("any"); }
protected override string GetTypeOutput(CodeTypeReference value) { return(value.ToString()); }
string ICodeGenerator.GetTypeOutput(CodeTypeReference type) { return(type.ToString()); }
//------------------------------------------------------------------- public override int GetHashCode() { return((NomFichier + CodeTypeReference.ToString()).GetHashCode()); }