diff --git a/src/Ardalis.Result.AspNetCore/MinimalApiResultExtensions.cs b/src/Ardalis.Result.AspNetCore/MinimalApiResultExtensions.cs
index da3f558..fcf0dc3 100644
--- a/src/Ardalis.Result.AspNetCore/MinimalApiResultExtensions.cs
+++ b/src/Ardalis.Result.AspNetCore/MinimalApiResultExtensions.cs
@@ -25,7 +25,13 @@ public static partial class ResultExtensions
///
public static Microsoft.AspNetCore.Http.IResult ToMinimalApiResult(this Result result) => ToMinimalApiResult((IResult)result);
- internal static Microsoft.AspNetCore.Http.IResult ToMinimalApiResult(this IResult result) =>
+ ///
+ /// Convert an Ardalis.Result to a .
+ /// Exposed so consumers can write a custom converter that handles selected statuses and delegates the
+ /// remaining statuses to the library's default mapping.
+ ///
+ /// The Ardalis.Result to convert.
+ public static Microsoft.AspNetCore.Http.IResult ToMinimalApiResult(this IResult result) =>
result.Status switch
{
ResultStatus.Ok => result is Result ? Results.Ok() : Results.Ok(result.GetValue()),
diff --git a/tests/Ardalis.Result.AspNetCore.UnitTests/MinimalApiResultExtensionsCoverage.cs b/tests/Ardalis.Result.AspNetCore.UnitTests/MinimalApiResultExtensionsCoverage.cs
index d36038c..1af5a75 100644
--- a/tests/Ardalis.Result.AspNetCore.UnitTests/MinimalApiResultExtensionsCoverage.cs
+++ b/tests/Ardalis.Result.AspNetCore.UnitTests/MinimalApiResultExtensionsCoverage.cs
@@ -41,5 +41,19 @@ public void ToMinimalApiResultHandlesAllResultStatusValues()
}
}
}
+
+ [Fact]
+ public void IResultOverloadIsPubliclyCallableAndDelegatesToTypedOverload()
+ {
+ // Casting to the Ardalis.Result IResult interface and calling the (now public) overload directly
+ // must compile and behave the same as calling it on the concrete Result.
+ Result result = Result.Success(42);
+ IResult asInterface = result;
+
+ Microsoft.AspNetCore.Http.IResult viaInterface = asInterface.ToMinimalApiResult();
+ Microsoft.AspNetCore.Http.IResult viaConcrete = result.ToMinimalApiResult();
+
+ Assert.Equal(viaConcrete.GetType(), viaInterface.GetType());
+ }
}
#endif
\ No newline at end of file