internal static void PrintTypeItemContent(NfTypeNameParseItem item, int count)
 {
     Console.WriteLine($"{new string('\t', count)}{item.FullName}");
     Console.WriteLine($"{new string('\t', count)}{item.AssemblyFullName}");
     Console.WriteLine($"{new string('\t', count)}{item.GenericCounter}");
     if (item.GenericItems == null)
     {
         return;
     }
     foreach (var typeNameParseItem in item.GenericItems)
     {
         PrintTypeItemContent(typeNameParseItem, count + 1);
     }
 }
Beispiel #2
0
        internal void ConvertToCs(NfTypeNameParseItem tnpi, StringBuilder bldr)
        {
            bldr = bldr ?? new StringBuilder();
            if (tnpi == null)
            {
                return;
            }

            var fname = tnpi.FullName;

            if (ValueTypeToLangAlias.ContainsKey(fname))
            {
                fname = ValueTypeToLangAlias[fname];
            }

            bldr.Append(fname);

            var hasGenCounter   = tnpi.GenericCounter != null && tnpi.GenericCounter > 0;
            var hasGenericItems = tnpi.GenericItems != null && tnpi.GenericItems.Any();

            if (!hasGenCounter && !hasGenericItems)
            {
                return;
            }

            if (hasGenCounter && !hasGenericItems)
            {
                bldr.Append($"<{new string(',', tnpi.GenericCounter.Value - 1)}>");
                return;
            }

            var genericItemsCs = new List <string>();

            foreach (var typeNameParseItem in tnpi.GenericItems)
            {
                var iBldr = new StringBuilder();
                ConvertToCs(typeNameParseItem, iBldr);
                genericItemsCs.Add(iBldr.ToString());
            }
            if (!genericItemsCs.Any())
            {
                return;
            }

            bldr.Append("<");
            bldr.Append(string.Join(",", genericItemsCs));
            bldr.Append(">");
        }
Beispiel #3
0
        internal NfTypeName(NfTypeNameParseItem parseItem)
        {
            if (parseItem == null)
            {
                return;
            }
            _className      = NfReflect.GetTypeNameWithoutNamespace(parseItem.FullName);
            _namespace      = NfReflect.GetNamespaceWithoutTypeName(parseItem.FullName);
            _publicKeyToken = parseItem.PublicKeyTokenValue;
            if (!string.IsNullOrWhiteSpace(parseItem.AssemblyFullName))
            {
                _asmName = new AssemblyName(parseItem.AssemblyFullName);
            }

            if (parseItem.GenericItems == null || !parseItem.GenericItems.Any())
            {
                return;
            }

            foreach (var gi in parseItem.GenericItems)
            {
                _genericArgs.Add(new NfTypeName(gi));
            }
        }