Skip to content

Commit 1bc4ba6

Browse files
Introduce the Results<TResult1, TResult2, TResultN> union types (#40986)
Fixes #40672
1 parent b2679bf commit 1bc4ba6

13 files changed

+3203
-1
lines changed

AspNetCore.sln

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1694,6 +1694,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "BuildAfterTargetingPack", "
16941694
EndProject
16951695
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BuildAfterTargetingPack", "src\BuildAfterTargetingPack\BuildAfterTargetingPack.csproj", "{8FED7E65-A7DD-4F13-8980-BF03E77B6C85}"
16961696
EndProject
1697+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ResultsOfTGenerator", "src\Http\Http.Results\tools\ResultsOfTGenerator\ResultsOfTGenerator.csproj", "{9716D0D0-2251-44DD-8596-67D253EEF41C}"
1698+
EndProject
16971699
Global
16981700
GlobalSection(SolutionConfigurationPlatforms) = preSolution
16991701
Debug|Any CPU = Debug|Any CPU
@@ -10135,6 +10137,22 @@ Global
1013510137
{8FED7E65-A7DD-4F13-8980-BF03E77B6C85}.Release|x64.Build.0 = Release|Any CPU
1013610138
{8FED7E65-A7DD-4F13-8980-BF03E77B6C85}.Release|x86.ActiveCfg = Release|Any CPU
1013710139
{8FED7E65-A7DD-4F13-8980-BF03E77B6C85}.Release|x86.Build.0 = Release|Any CPU
10140+
{9716D0D0-2251-44DD-8596-67D253EEF41C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
10141+
{9716D0D0-2251-44DD-8596-67D253EEF41C}.Debug|Any CPU.Build.0 = Debug|Any CPU
10142+
{9716D0D0-2251-44DD-8596-67D253EEF41C}.Debug|arm64.ActiveCfg = Debug|Any CPU
10143+
{9716D0D0-2251-44DD-8596-67D253EEF41C}.Debug|arm64.Build.0 = Debug|Any CPU
10144+
{9716D0D0-2251-44DD-8596-67D253EEF41C}.Debug|x64.ActiveCfg = Debug|Any CPU
10145+
{9716D0D0-2251-44DD-8596-67D253EEF41C}.Debug|x64.Build.0 = Debug|Any CPU
10146+
{9716D0D0-2251-44DD-8596-67D253EEF41C}.Debug|x86.ActiveCfg = Debug|Any CPU
10147+
{9716D0D0-2251-44DD-8596-67D253EEF41C}.Debug|x86.Build.0 = Debug|Any CPU
10148+
{9716D0D0-2251-44DD-8596-67D253EEF41C}.Release|Any CPU.ActiveCfg = Release|Any CPU
10149+
{9716D0D0-2251-44DD-8596-67D253EEF41C}.Release|Any CPU.Build.0 = Release|Any CPU
10150+
{9716D0D0-2251-44DD-8596-67D253EEF41C}.Release|arm64.ActiveCfg = Release|Any CPU
10151+
{9716D0D0-2251-44DD-8596-67D253EEF41C}.Release|arm64.Build.0 = Release|Any CPU
10152+
{9716D0D0-2251-44DD-8596-67D253EEF41C}.Release|x64.ActiveCfg = Release|Any CPU
10153+
{9716D0D0-2251-44DD-8596-67D253EEF41C}.Release|x64.Build.0 = Release|Any CPU
10154+
{9716D0D0-2251-44DD-8596-67D253EEF41C}.Release|x86.ActiveCfg = Release|Any CPU
10155+
{9716D0D0-2251-44DD-8596-67D253EEF41C}.Release|x86.Build.0 = Release|Any CPU
1013810156
EndGlobalSection
1013910157
GlobalSection(SolutionProperties) = preSolution
1014010158
HideSolutionNode = FALSE
@@ -10974,6 +10992,7 @@ Global
1097410992
{B7DAA48B-8E5E-4A5D-9FEB-E6D49AE76A04} = {41BB7BA4-AC08-4E9A-83EA-6D587A5B951C}
1097510993
{489020F2-80D9-4468-A5D3-07E785837A5D} = {017429CC-C5FB-48B4-9C46-034E29EE2F06}
1097610994
{8FED7E65-A7DD-4F13-8980-BF03E77B6C85} = {489020F2-80D9-4468-A5D3-07E785837A5D}
10995+
{9716D0D0-2251-44DD-8596-67D253EEF41C} = {323C3EB6-1D15-4B3D-918D-699D7F64DED9}
1097710996
EndGlobalSection
1097810997
GlobalSection(ExtensibilityGlobals) = postSolution
1097910998
SolutionGuid = {3E8720B3-DBDD-498C-B383-2CC32A054E8F}

src/Http/Http.Results/README.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
# ASP.NET Core Http.Results
2+
3+
Http.Results contains the in-framework implementations of the `IResult` interface returned from Minimal APIs route handler delegates, e.g. `OkHttpResult`, `NoContentHttpResult`, etc.
4+
5+
## Development Setup
6+
7+
The `Results<TResult1, TResult2, TResultN>` union types are generated. Modify and run the [ResultsOfTGenerator](tools/ResultsOfTGenerator/) tool to generate an updated `ResultsOfT.cs` class file.
8+
9+
Run the following command in `src\Http\Http.Results\tools\ResultsOfTGenerator`:
10+
11+
```
12+
dotnet run
13+
```

src/Http/Http.Results/src/PublicAPI.Unshipped.txt

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,41 @@ Microsoft.AspNetCore.Http.RedirectToRouteHttpResult.Permanent.get -> bool
114114
Microsoft.AspNetCore.Http.RedirectToRouteHttpResult.PreserveMethod.get -> bool
115115
Microsoft.AspNetCore.Http.RedirectToRouteHttpResult.RouteName.get -> string?
116116
Microsoft.AspNetCore.Http.RedirectToRouteHttpResult.RouteValues.get -> Microsoft.AspNetCore.Routing.RouteValueDictionary?
117+
Microsoft.AspNetCore.Http.Results<TResult1, TResult2, TResult3, TResult4, TResult5, TResult6>
118+
Microsoft.AspNetCore.Http.Results<TResult1, TResult2, TResult3, TResult4, TResult5, TResult6>.ExecuteAsync(Microsoft.AspNetCore.Http.HttpContext! httpContext) -> System.Threading.Tasks.Task!
119+
Microsoft.AspNetCore.Http.Results<TResult1, TResult2, TResult3, TResult4, TResult5, TResult6>.Result.get -> Microsoft.AspNetCore.Http.IResult!
120+
Microsoft.AspNetCore.Http.Results<TResult1, TResult2, TResult3, TResult4, TResult5>
121+
Microsoft.AspNetCore.Http.Results<TResult1, TResult2, TResult3, TResult4, TResult5>.ExecuteAsync(Microsoft.AspNetCore.Http.HttpContext! httpContext) -> System.Threading.Tasks.Task!
122+
Microsoft.AspNetCore.Http.Results<TResult1, TResult2, TResult3, TResult4, TResult5>.Result.get -> Microsoft.AspNetCore.Http.IResult!
123+
Microsoft.AspNetCore.Http.Results<TResult1, TResult2, TResult3, TResult4>
124+
Microsoft.AspNetCore.Http.Results<TResult1, TResult2, TResult3, TResult4>.ExecuteAsync(Microsoft.AspNetCore.Http.HttpContext! httpContext) -> System.Threading.Tasks.Task!
125+
Microsoft.AspNetCore.Http.Results<TResult1, TResult2, TResult3, TResult4>.Result.get -> Microsoft.AspNetCore.Http.IResult!
126+
Microsoft.AspNetCore.Http.Results<TResult1, TResult2, TResult3>
127+
Microsoft.AspNetCore.Http.Results<TResult1, TResult2, TResult3>.ExecuteAsync(Microsoft.AspNetCore.Http.HttpContext! httpContext) -> System.Threading.Tasks.Task!
128+
Microsoft.AspNetCore.Http.Results<TResult1, TResult2, TResult3>.Result.get -> Microsoft.AspNetCore.Http.IResult!
129+
Microsoft.AspNetCore.Http.Results<TResult1, TResult2>
130+
Microsoft.AspNetCore.Http.Results<TResult1, TResult2>.ExecuteAsync(Microsoft.AspNetCore.Http.HttpContext! httpContext) -> System.Threading.Tasks.Task!
131+
Microsoft.AspNetCore.Http.Results<TResult1, TResult2>.Result.get -> Microsoft.AspNetCore.Http.IResult!
132+
static Microsoft.AspNetCore.Http.Results<TResult1, TResult2, TResult3, TResult4, TResult5, TResult6>.implicit operator Microsoft.AspNetCore.Http.Results<TResult1, TResult2, TResult3, TResult4, TResult5, TResult6>!(TResult1 result) -> Microsoft.AspNetCore.Http.Results<TResult1, TResult2, TResult3, TResult4, TResult5, TResult6>!
133+
static Microsoft.AspNetCore.Http.Results<TResult1, TResult2, TResult3, TResult4, TResult5, TResult6>.implicit operator Microsoft.AspNetCore.Http.Results<TResult1, TResult2, TResult3, TResult4, TResult5, TResult6>!(TResult2 result) -> Microsoft.AspNetCore.Http.Results<TResult1, TResult2, TResult3, TResult4, TResult5, TResult6>!
134+
static Microsoft.AspNetCore.Http.Results<TResult1, TResult2, TResult3, TResult4, TResult5, TResult6>.implicit operator Microsoft.AspNetCore.Http.Results<TResult1, TResult2, TResult3, TResult4, TResult5, TResult6>!(TResult3 result) -> Microsoft.AspNetCore.Http.Results<TResult1, TResult2, TResult3, TResult4, TResult5, TResult6>!
135+
static Microsoft.AspNetCore.Http.Results<TResult1, TResult2, TResult3, TResult4, TResult5, TResult6>.implicit operator Microsoft.AspNetCore.Http.Results<TResult1, TResult2, TResult3, TResult4, TResult5, TResult6>!(TResult4 result) -> Microsoft.AspNetCore.Http.Results<TResult1, TResult2, TResult3, TResult4, TResult5, TResult6>!
136+
static Microsoft.AspNetCore.Http.Results<TResult1, TResult2, TResult3, TResult4, TResult5, TResult6>.implicit operator Microsoft.AspNetCore.Http.Results<TResult1, TResult2, TResult3, TResult4, TResult5, TResult6>!(TResult5 result) -> Microsoft.AspNetCore.Http.Results<TResult1, TResult2, TResult3, TResult4, TResult5, TResult6>!
137+
static Microsoft.AspNetCore.Http.Results<TResult1, TResult2, TResult3, TResult4, TResult5, TResult6>.implicit operator Microsoft.AspNetCore.Http.Results<TResult1, TResult2, TResult3, TResult4, TResult5, TResult6>!(TResult6 result) -> Microsoft.AspNetCore.Http.Results<TResult1, TResult2, TResult3, TResult4, TResult5, TResult6>!
138+
static Microsoft.AspNetCore.Http.Results<TResult1, TResult2, TResult3, TResult4, TResult5>.implicit operator Microsoft.AspNetCore.Http.Results<TResult1, TResult2, TResult3, TResult4, TResult5>!(TResult1 result) -> Microsoft.AspNetCore.Http.Results<TResult1, TResult2, TResult3, TResult4, TResult5>!
139+
static Microsoft.AspNetCore.Http.Results<TResult1, TResult2, TResult3, TResult4, TResult5>.implicit operator Microsoft.AspNetCore.Http.Results<TResult1, TResult2, TResult3, TResult4, TResult5>!(TResult2 result) -> Microsoft.AspNetCore.Http.Results<TResult1, TResult2, TResult3, TResult4, TResult5>!
140+
static Microsoft.AspNetCore.Http.Results<TResult1, TResult2, TResult3, TResult4, TResult5>.implicit operator Microsoft.AspNetCore.Http.Results<TResult1, TResult2, TResult3, TResult4, TResult5>!(TResult3 result) -> Microsoft.AspNetCore.Http.Results<TResult1, TResult2, TResult3, TResult4, TResult5>!
141+
static Microsoft.AspNetCore.Http.Results<TResult1, TResult2, TResult3, TResult4, TResult5>.implicit operator Microsoft.AspNetCore.Http.Results<TResult1, TResult2, TResult3, TResult4, TResult5>!(TResult4 result) -> Microsoft.AspNetCore.Http.Results<TResult1, TResult2, TResult3, TResult4, TResult5>!
142+
static Microsoft.AspNetCore.Http.Results<TResult1, TResult2, TResult3, TResult4, TResult5>.implicit operator Microsoft.AspNetCore.Http.Results<TResult1, TResult2, TResult3, TResult4, TResult5>!(TResult5 result) -> Microsoft.AspNetCore.Http.Results<TResult1, TResult2, TResult3, TResult4, TResult5>!
143+
static Microsoft.AspNetCore.Http.Results<TResult1, TResult2, TResult3, TResult4>.implicit operator Microsoft.AspNetCore.Http.Results<TResult1, TResult2, TResult3, TResult4>!(TResult1 result) -> Microsoft.AspNetCore.Http.Results<TResult1, TResult2, TResult3, TResult4>!
144+
static Microsoft.AspNetCore.Http.Results<TResult1, TResult2, TResult3, TResult4>.implicit operator Microsoft.AspNetCore.Http.Results<TResult1, TResult2, TResult3, TResult4>!(TResult2 result) -> Microsoft.AspNetCore.Http.Results<TResult1, TResult2, TResult3, TResult4>!
145+
static Microsoft.AspNetCore.Http.Results<TResult1, TResult2, TResult3, TResult4>.implicit operator Microsoft.AspNetCore.Http.Results<TResult1, TResult2, TResult3, TResult4>!(TResult3 result) -> Microsoft.AspNetCore.Http.Results<TResult1, TResult2, TResult3, TResult4>!
146+
static Microsoft.AspNetCore.Http.Results<TResult1, TResult2, TResult3, TResult4>.implicit operator Microsoft.AspNetCore.Http.Results<TResult1, TResult2, TResult3, TResult4>!(TResult4 result) -> Microsoft.AspNetCore.Http.Results<TResult1, TResult2, TResult3, TResult4>!
147+
static Microsoft.AspNetCore.Http.Results<TResult1, TResult2, TResult3>.implicit operator Microsoft.AspNetCore.Http.Results<TResult1, TResult2, TResult3>!(TResult1 result) -> Microsoft.AspNetCore.Http.Results<TResult1, TResult2, TResult3>!
148+
static Microsoft.AspNetCore.Http.Results<TResult1, TResult2, TResult3>.implicit operator Microsoft.AspNetCore.Http.Results<TResult1, TResult2, TResult3>!(TResult2 result) -> Microsoft.AspNetCore.Http.Results<TResult1, TResult2, TResult3>!
149+
static Microsoft.AspNetCore.Http.Results<TResult1, TResult2, TResult3>.implicit operator Microsoft.AspNetCore.Http.Results<TResult1, TResult2, TResult3>!(TResult3 result) -> Microsoft.AspNetCore.Http.Results<TResult1, TResult2, TResult3>!
150+
static Microsoft.AspNetCore.Http.Results<TResult1, TResult2>.implicit operator Microsoft.AspNetCore.Http.Results<TResult1, TResult2>!(TResult1 result) -> Microsoft.AspNetCore.Http.Results<TResult1, TResult2>!
151+
static Microsoft.AspNetCore.Http.Results<TResult1, TResult2>.implicit operator Microsoft.AspNetCore.Http.Results<TResult1, TResult2>!(TResult2 result) -> Microsoft.AspNetCore.Http.Results<TResult1, TResult2>!
117152
Microsoft.AspNetCore.Http.SignInHttpResult
118153
Microsoft.AspNetCore.Http.SignInHttpResult.AuthenticationScheme.get -> string?
119154
Microsoft.AspNetCore.Http.SignInHttpResult.ExecuteAsync(Microsoft.AspNetCore.Http.HttpContext! httpContext) -> System.Threading.Tasks.Task!

0 commit comments

Comments
 (0)