@@ -89,44 +89,41 @@ private static void WriteTypeNameWithGenerics(ref ValueStringBuilder vsb, Type t
8989 {
9090 // Build the full type hierarchy including all containing types
9191 var typeHierarchy = new ValueListBuilder < string > ( [ null , null , null , null ] ) ;
92+ var typeVsb = new ValueStringBuilder ( stackalloc char [ 128 ] ) ;
9293 var currentType = type ;
9394
9495 while ( currentType != null )
9596 {
9697 if ( currentType . IsGenericType )
9798 {
98- var typeSb = new StringBuilder ( ) ;
9999 var name = currentType . Name ;
100100
101101 var backtickIndex = name . IndexOf ( '`' ) ;
102102 if ( backtickIndex > 0 )
103103 {
104- #if NET6_0_OR_GREATER
105- typeSb . Append ( name . AsSpan ( 0 , backtickIndex ) ) ;
106- #else
107- typeSb . Append ( name . Substring ( 0 , backtickIndex ) ) ;
108- #endif
104+ typeVsb . Append ( name . AsSpan ( 0 , backtickIndex ) ) ;
109105 }
110106 else
111107 {
112- typeSb . Append ( name ) ;
108+ typeVsb . Append ( name ) ;
113109 }
114110
115111 // Add the generic type arguments
116112 var genericArgs = currentType . GetGenericArguments ( ) ;
117- typeSb . Append ( '<' ) ;
113+ typeVsb . Append ( '<' ) ;
118114 for ( var i = 0 ; i < genericArgs . Length ; i ++ )
119115 {
120116 if ( i > 0 )
121117 {
122- typeSb . Append ( ", " ) ;
118+ typeVsb . Append ( ", " ) ;
123119 }
124120 // Use the full name for generic arguments to ensure uniqueness
125- typeSb . Append ( genericArgs [ i ] . FullName ?? genericArgs [ i ] . Name ) ;
121+ typeVsb . Append ( genericArgs [ i ] . FullName ?? genericArgs [ i ] . Name ) ;
126122 }
127- typeSb . Append ( '>' ) ;
123+ typeVsb . Append ( '>' ) ;
128124
129- typeHierarchy . Append ( typeSb . ToString ( ) ) ;
125+ typeHierarchy . Append ( typeVsb . AsSpan ( ) . ToString ( ) ) ;
126+ typeVsb . Length = 0 ;
130127 }
131128 else
132129 {
@@ -147,6 +144,7 @@ private static void WriteTypeNameWithGenerics(ref ValueStringBuilder vsb, Type t
147144 vsb . Append ( typeHierarchy [ i ] ) ;
148145 }
149146 typeHierarchy . Dispose ( ) ;
147+ typeVsb . Dispose ( ) ;
150148 }
151149
152150 private static void WriteTypeWithParameters ( ref ValueStringBuilder vsb , ReadOnlySpan < ParameterMetadata > parameterTypes )
0 commit comments