/// <summary> /// Namespace.ParentType[T].NestedType[TT] -> NestedType[TT] <br/> /// Namespace.ParentType[T] -> global::Namespace.ParentType[T] /// </summary> private NameSyntax GetQualifiedName(ITypeInfo type) { ReferenceCollector?.AddType(type); string[] parts = type.Name.Split(Type.Delimiter); NameSyntax[] names = new NameSyntax[parts.Length]; if (type.IsNested) { names[0] = CreateTypeName(parts.Single() !); } else { for (int i = 0; i < parts.Length - 1; i++) { names[i] = IdentifierName(parts[i]); } names[names.Length - 1] = CreateTypeName(parts[parts.Length - 1]); // // Ez jol kezeli azt az esetet is ha a tipus nincs nevter alatt // if (!type.IsVoid && !type.IsGenericParameter) { names[0] = AliasQualifiedName ( IdentifierName(Token(SyntaxKind.GlobalKeyword)), (SimpleNameSyntax)names[0] ); } } return(names.Qualify()); NameSyntax CreateTypeName(string name) => type is not IGenericTypeInfo genericType?IdentifierName(name) : GenericName(name).WithTypeArgumentList ( typeArgumentList: TypeArgumentList ( arguments: genericType.GenericArguments.ToSyntaxList(ResolveType) ) ); }