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 )