@@ -132,11 +132,9 @@ protected override void SetBasicInfo(OpenApiOperation operation)
132
132
133
133
/// <inheritdoc/>
134
134
protected override void SetTags ( OpenApiOperation operation )
135
- {
136
- string tagName = null ;
137
- var secondLastSegment = Path . Segments . Reverse ( ) . Skip ( 1 ) . First ( ) ;
138
- GenerateTagName ( secondLastSegment , out tagName ) ;
139
- OpenApiTag tag = new OpenApiTag
135
+ {
136
+ GenerateTagName ( out string tagName ) ;
137
+ OpenApiTag tag = new ( )
140
138
{
141
139
Name = tagName ,
142
140
} ;
@@ -148,18 +146,26 @@ protected override void SetTags(OpenApiOperation operation)
148
146
base . SetTags ( operation ) ;
149
147
}
150
148
151
- private void GenerateTagName ( ODataSegment targetSegment , out string tagName )
152
- {
149
+ /// <summary>
150
+ /// Genrates the tag name for the operation.
151
+ /// </summary>
152
+ /// <param name="tagName">The generated tag name.</param>
153
+ /// <param name="skip">The number of segments to skip.</param>
154
+ private void GenerateTagName ( out string tagName , int skip = 1 )
155
+ {
156
+ var targetSegment = Path . Segments . Reverse ( ) . Skip ( skip ) . First ( ) ;
157
+
153
158
if ( targetSegment is ODataNavigationPropertySegment )
154
159
{
155
160
tagName = EdmModelHelper . GenerateNavigationPropertyPathTagName ( Path , Context ) ;
156
161
}
157
- else if ( targetSegment is ODataOperationSegment || targetSegment is ODataOperationImportSegment )
158
- { // Composable function
159
- targetSegment = Path . Segments . Reverse ( ) . Skip ( 2 ) . First ( ) ;
160
- GenerateTagName ( targetSegment , out tagName ) ;
162
+ else if ( targetSegment is ODataOperationSegment || targetSegment is ODataOperationImportSegment // Composable function
163
+ || targetSegment is ODataKeySegment ) // Previous segmment could be a navigation property or a navigation source segment
164
+ {
165
+ skip += 1 ;
166
+ GenerateTagName ( out tagName , skip ) ;
161
167
}
162
- else // ODataKeySegment or ODataNavigationSourceSegment
168
+ else // ODataNavigationSourceSegment
163
169
{
164
170
tagName = NavigationSource . Name + "." + NavigationSource . EntityType . Name ;
165
171
}
0 commit comments