From 2743cc367bdb4163d9441e27a7246aed395513e1 Mon Sep 17 00:00:00 2001 From: Daniel Hufnagl Date: Wed, 14 Aug 2024 11:18:01 +0200 Subject: [PATCH] added Construct --- .../New/ClassDeclarationSyntaxExtensions.cs | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/src/GeneratorHelper/Generators.Base/Extensions/New/ClassDeclarationSyntaxExtensions.cs b/src/GeneratorHelper/Generators.Base/Extensions/New/ClassDeclarationSyntaxExtensions.cs index 68661c4..2289f96 100644 --- a/src/GeneratorHelper/Generators.Base/Extensions/New/ClassDeclarationSyntaxExtensions.cs +++ b/src/GeneratorHelper/Generators.Base/Extensions/New/ClassDeclarationSyntaxExtensions.cs @@ -12,6 +12,39 @@ namespace Generators.Base.Extensions.New { public static class ClassDeclarationSyntaxExtensions { + public static ClassDeclarationSyntax Construct( + this ClassDeclarationSyntax symbol, + params string[] typeArguments + ) + { + // Erstelle eine Liste der TypeArgumentSyntax-Knoten basierend auf den übergebenen Strings + var typeArgumentList = SyntaxFactory.TypeArgumentList( + SyntaxFactory.SeparatedList( + typeArguments.Select(arg => SyntaxFactory.ParseTypeName(arg)) + ) + ); + + // Erstelle eine neue BaseList, wenn Typargumente vorhanden sind + var newBaseList = + symbol.BaseList != null + ? symbol.BaseList.WithTypes( + SyntaxFactory.SeparatedList( + symbol.BaseList.Types.Select(bt => + bt.WithType( + SyntaxFactory.GenericName( + ((IdentifierNameSyntax)bt.Type).Identifier, + typeArgumentList + ) + ) + ) + ) + ) + : null; + + // Rückgabe einer neuen Klasse mit den modifizierten Basisklassen + return symbol.WithBaseList(newBaseList); + } + public static bool HasAttribute( this ClassDeclarationSyntax classDeclarationSyntax )