From 860606886e94b67f2017340dfedbbe66196db3c2 Mon Sep 17 00:00:00 2001 From: Alex Macocian Date: Thu, 22 May 2025 16:26:57 +0200 Subject: [PATCH] Support ProducesType(statusCode) constructor argument --- .../Net.Sdk.Web.Extensions.SourceGenerators.csproj | 2 +- .../UseRoutesGenerator.cs | 8 +++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/Net.Sdk.Web.Extensions.SourceGenerators/Net.Sdk.Web.Extensions.SourceGenerators.csproj b/Net.Sdk.Web.Extensions.SourceGenerators/Net.Sdk.Web.Extensions.SourceGenerators.csproj index 4cd9dc8..55a2ed1 100644 --- a/Net.Sdk.Web.Extensions.SourceGenerators/Net.Sdk.Web.Extensions.SourceGenerators.csproj +++ b/Net.Sdk.Web.Extensions.SourceGenerators/Net.Sdk.Web.Extensions.SourceGenerators.csproj @@ -2,7 +2,7 @@ netstandard2.0 - 0.9.1 + 0.9.2 latest true Alexandru Macocian diff --git a/Net.Sdk.Web.Extensions.SourceGenerators/UseRoutesGenerator.cs b/Net.Sdk.Web.Extensions.SourceGenerators/UseRoutesGenerator.cs index f7a6213..495882c 100644 --- a/Net.Sdk.Web.Extensions.SourceGenerators/UseRoutesGenerator.cs +++ b/Net.Sdk.Web.Extensions.SourceGenerators/UseRoutesGenerator.cs @@ -312,14 +312,16 @@ public class UseRoutesGenerator : IIncrementalGenerator typeArg = genericNameSyntax.TypeArgumentList.Arguments[0].ToString(); } - var statusCodeArg = attributeData.NamedArguments.FirstOrDefault(na => na.Key == "StatusCode").Value.Value as int? ?? 200; + var statusCode = attributeData.NamedArguments.FirstOrDefault(na => na.Key == "StatusCode").Value.Value as int ? + ?? attributeData.ConstructorArguments.FirstOrDefault(arg => arg.Type?.SpecialType == SpecialType.System_Int32).Value as int ? + ?? 200; if (typeArg is null) { - extensionsBuilder.Append($"\n.{Constants.ProducesAttributeShortName}(statusCode: {statusCodeArg})"); + extensionsBuilder.Append($"\n.{Constants.ProducesAttributeShortName}(statusCode: {statusCode})"); } else { - extensionsBuilder.Append($"\n.{Constants.ProducesAttributeShortName}(statusCode: {statusCodeArg}, responseType: typeof({typeArg}))"); + extensionsBuilder.Append($"\n.{Constants.ProducesAttributeShortName}(statusCode: {statusCode}, responseType: typeof({typeArg}))"); } } }