コード例 #1
0
        /// <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");
        }
コード例 #2
0
 protected override string GetTypeOutput(CodeTypeReference value)
 {
     return(value.ToString());
 }
コード例 #3
0
 string ICodeGenerator.GetTypeOutput(CodeTypeReference type)
 {
     return(type.ToString());
 }
コード例 #4
0
 //-------------------------------------------------------------------
 public override int GetHashCode()
 {
     return((NomFichier + CodeTypeReference.ToString()).GetHashCode());
 }