@@ -42,7 +42,7 @@ private static ControllerAction CreateControllerAction(HttpMethod method, string
42
42
Type = HttpMethodToOperationType ( method ) ,
43
43
Path = route . StartsWith ( "/" ) ? route : "/" + route ,
44
44
Names = CreateNames ( item . ControllerType ) ,
45
- Responses = CreateResponses ( item . ControllerType ) ,
45
+ Responses = CreateResponses ( item . ControllerType , context ) ,
46
46
RequestBody = CreateRequestBody ( item . ControllerType , context ) ,
47
47
IsAuthorizationRequired = item . Security != null && item . Security . IsAuthorizationRequired
48
48
} ;
@@ -112,19 +112,19 @@ private static OpenApiRequestBody CreateRequestBody(Type controllerType, Documen
112
112
return request ;
113
113
}
114
114
115
- private static IDictionary < int , OpenApiResponse > CreateResponses ( Type controllerType )
115
+ private static IDictionary < int , OpenApiResponse > CreateResponses ( Type controllerType , DocumentFilterContext context )
116
116
{
117
117
var items = new Dictionary < int , OpenApiResponse > ( ) ;
118
118
119
119
var attributes = controllerType . GetCustomAttributes ( typeof ( ProducesResponseAttribute ) , false ) ;
120
120
121
121
foreach ( ProducesResponseAttribute item in attributes )
122
- items . Add ( item . StatusCode , CreateResponse ( item ) ) ;
122
+ items . Add ( item . StatusCode , CreateResponse ( item , context ) ) ;
123
123
124
124
return items ;
125
125
}
126
126
127
- private static OpenApiResponse CreateResponse ( ProducesResponseAttribute producesResponse )
127
+ private static OpenApiResponse CreateResponse ( ProducesResponseAttribute producesResponse , DocumentFilterContext context )
128
128
{
129
129
var response = new OpenApiResponse ( ) ;
130
130
@@ -133,7 +133,9 @@ private static OpenApiResponse CreateResponse(ProducesResponseAttribute produces
133
133
. Value ;
134
134
135
135
foreach ( var item in producesResponse . ContentTypes . Distinct ( ) )
136
- response . Content . Add ( item , new OpenApiMediaType ( ) ) ;
136
+ response . Content . Add ( item , producesResponse . Type is null
137
+ ? new OpenApiMediaType ( )
138
+ : new ( ) { Schema = context . SchemaGenerator . GenerateSchema ( producesResponse . Type , context . SchemaRepository ) } ) ;
137
139
138
140
return response ;
139
141
}
0 commit comments