Skip to content

Commit d7b1956

Browse files
committed
Revert ResultsOfT
1 parent 5e670bc commit d7b1956

File tree

3 files changed

+10
-39
lines changed

3 files changed

+10
-39
lines changed

src/Http/Http.Results/src/ResultsOfT.Generated.cs

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33

44
// This file is generated by a tool. See: src/Http/Http.Results/tools/ResultsOfTGenerator
55

6-
using System.Diagnostics.CodeAnalysis;
76
using System.Reflection;
87
using Microsoft.AspNetCore.Builder;
98
using Microsoft.AspNetCore.Http.Metadata;
@@ -21,7 +20,7 @@ namespace Microsoft.AspNetCore.Http.HttpResults;
2120
/// </remarks>
2221
/// <typeparam name="TResult1">The first result type.</typeparam>
2322
/// <typeparam name="TResult2">The second result type.</typeparam>
24-
public sealed class Results<[DynamicallyAccessedMembers(ResultsOfTHelper.RequireMethods)] TResult1, [DynamicallyAccessedMembers(ResultsOfTHelper.RequireMethods)] TResult2> : IResult, INestedHttpResult, IEndpointMetadataProvider
23+
public sealed class Results<TResult1, TResult2> : IResult, INestedHttpResult, IEndpointMetadataProvider
2524
where TResult1 : IResult
2625
where TResult2 : IResult
2726
{
@@ -84,7 +83,7 @@ static void IEndpointMetadataProvider.PopulateMetadata(MethodInfo method, Endpoi
8483
/// <typeparam name="TResult1">The first result type.</typeparam>
8584
/// <typeparam name="TResult2">The second result type.</typeparam>
8685
/// <typeparam name="TResult3">The third result type.</typeparam>
87-
public sealed class Results<[DynamicallyAccessedMembers(ResultsOfTHelper.RequireMethods)] TResult1, [DynamicallyAccessedMembers(ResultsOfTHelper.RequireMethods)] TResult2, [DynamicallyAccessedMembers(ResultsOfTHelper.RequireMethods)] TResult3> : IResult, INestedHttpResult, IEndpointMetadataProvider
86+
public sealed class Results<TResult1, TResult2, TResult3> : IResult, INestedHttpResult, IEndpointMetadataProvider
8887
where TResult1 : IResult
8988
where TResult2 : IResult
9089
where TResult3 : IResult
@@ -156,7 +155,7 @@ static void IEndpointMetadataProvider.PopulateMetadata(MethodInfo method, Endpoi
156155
/// <typeparam name="TResult2">The second result type.</typeparam>
157156
/// <typeparam name="TResult3">The third result type.</typeparam>
158157
/// <typeparam name="TResult4">The fourth result type.</typeparam>
159-
public sealed class Results<[DynamicallyAccessedMembers(ResultsOfTHelper.RequireMethods)] TResult1, [DynamicallyAccessedMembers(ResultsOfTHelper.RequireMethods)] TResult2, [DynamicallyAccessedMembers(ResultsOfTHelper.RequireMethods)] TResult3, [DynamicallyAccessedMembers(ResultsOfTHelper.RequireMethods)] TResult4> : IResult, INestedHttpResult, IEndpointMetadataProvider
158+
public sealed class Results<TResult1, TResult2, TResult3, TResult4> : IResult, INestedHttpResult, IEndpointMetadataProvider
160159
where TResult1 : IResult
161160
where TResult2 : IResult
162161
where TResult3 : IResult
@@ -237,7 +236,7 @@ static void IEndpointMetadataProvider.PopulateMetadata(MethodInfo method, Endpoi
237236
/// <typeparam name="TResult3">The third result type.</typeparam>
238237
/// <typeparam name="TResult4">The fourth result type.</typeparam>
239238
/// <typeparam name="TResult5">The fifth result type.</typeparam>
240-
public sealed class Results<[DynamicallyAccessedMembers(ResultsOfTHelper.RequireMethods)] TResult1, [DynamicallyAccessedMembers(ResultsOfTHelper.RequireMethods)] TResult2, [DynamicallyAccessedMembers(ResultsOfTHelper.RequireMethods)] TResult3, [DynamicallyAccessedMembers(ResultsOfTHelper.RequireMethods)] TResult4, [DynamicallyAccessedMembers(ResultsOfTHelper.RequireMethods)] TResult5> : IResult, INestedHttpResult, IEndpointMetadataProvider
239+
public sealed class Results<TResult1, TResult2, TResult3, TResult4, TResult5> : IResult, INestedHttpResult, IEndpointMetadataProvider
241240
where TResult1 : IResult
242241
where TResult2 : IResult
243242
where TResult3 : IResult
@@ -327,7 +326,7 @@ static void IEndpointMetadataProvider.PopulateMetadata(MethodInfo method, Endpoi
327326
/// <typeparam name="TResult4">The fourth result type.</typeparam>
328327
/// <typeparam name="TResult5">The fifth result type.</typeparam>
329328
/// <typeparam name="TResult6">The sixth result type.</typeparam>
330-
public sealed class Results<[DynamicallyAccessedMembers(ResultsOfTHelper.RequireMethods)] TResult1, [DynamicallyAccessedMembers(ResultsOfTHelper.RequireMethods)] TResult2, [DynamicallyAccessedMembers(ResultsOfTHelper.RequireMethods)] TResult3, [DynamicallyAccessedMembers(ResultsOfTHelper.RequireMethods)] TResult4, [DynamicallyAccessedMembers(ResultsOfTHelper.RequireMethods)] TResult5, [DynamicallyAccessedMembers(ResultsOfTHelper.RequireMethods)] TResult6> : IResult, INestedHttpResult, IEndpointMetadataProvider
329+
public sealed class Results<TResult1, TResult2, TResult3, TResult4, TResult5, TResult6> : IResult, INestedHttpResult, IEndpointMetadataProvider
331330
where TResult1 : IResult
332331
where TResult2 : IResult
333332
where TResult3 : IResult

src/Http/Http.Results/src/ResultsOfTHelper.cs

Lines changed: 4 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,51 +1,24 @@
11
// Licensed to the .NET Foundation under one or more agreements.
22
// The .NET Foundation licenses this file to you under the MIT license.
33

4-
using System.Diagnostics;
54
using System.Diagnostics.CodeAnalysis;
65
using System.Reflection;
7-
using System.Runtime.CompilerServices;
86
using Microsoft.AspNetCore.Builder;
97
using Microsoft.AspNetCore.Http.Metadata;
108

119
namespace Microsoft.AspNetCore.Http;
1210

1311
internal static class ResultsOfTHelper
1412
{
15-
public const DynamicallyAccessedMemberTypes RequireMethods = DynamicallyAccessedMemberTypes.PublicMethods | DynamicallyAccessedMemberTypes.NonPublicMethods;
1613
private static readonly MethodInfo PopulateMetadataMethod = typeof(ResultsOfTHelper).GetMethod(nameof(PopulateMetadata), BindingFlags.Static | BindingFlags.NonPublic)!;
1714

18-
public static void PopulateMetadataIfTargetIsIEndpointMetadataProvider<[DynamicallyAccessedMembers(RequireMethods)] TTarget>(MethodInfo method, EndpointBuilder builder)
15+
[UnconditionalSuppressMessage("AOT", "IL3050", Justification = "Only called from unsafe code.")]
16+
[UnconditionalSuppressMessage("Trimmer", "IL2060", Justification = "Only called from unsafe code.")]
17+
public static void PopulateMetadataIfTargetIsIEndpointMetadataProvider<TTarget>(MethodInfo method, EndpointBuilder builder)
1918
{
2019
if (typeof(IEndpointMetadataProvider).IsAssignableFrom(typeof(TTarget)))
2120
{
22-
var parameters = new object[] { method, builder };
23-
24-
if (RuntimeFeature.IsDynamicCodeSupported)
25-
{
26-
InvokeGenericPopulateMetadata(parameters);
27-
}
28-
else
29-
{
30-
// Prioritize explicit implementation.
31-
var populateMetadataMethod = typeof(TTarget).GetMethod("Microsoft.AspNetCore.Http.Metadata.IEndpointMetadataProvider.PopulateMetadata", BindingFlags.Static | BindingFlags.NonPublic);
32-
if (populateMetadataMethod is null)
33-
{
34-
populateMetadataMethod = typeof(TTarget).GetMethod("PopulateMetadata", BindingFlags.Static | BindingFlags.Public);
35-
}
36-
Debug.Assert(populateMetadataMethod != null, $"Couldn't find PopulateMetadata method on {typeof(TTarget)}.");
37-
38-
populateMetadataMethod.Invoke(null, BindingFlags.DoNotWrapExceptions, binder: null, parameters, culture: null);
39-
}
40-
}
41-
42-
// TODO: Remove IL3050 suppress when https://github.com/dotnet/linker/issues/2715 is complete.
43-
[UnconditionalSuppressMessage("AOT", "IL3050", Justification = "Validated with IsDynamicCodeSupported check.")]
44-
[UnconditionalSuppressMessage("ReflectionAnalysis", "IL2060:MakeGenericMethod",
45-
Justification = "PopulateMetadataMethod calls a public static method. TTarget is annotated to include public methods.")]
46-
static void InvokeGenericPopulateMetadata(object[] parameters)
47-
{
48-
PopulateMetadataMethod.MakeGenericMethod(typeof(TTarget)).Invoke(null, parameters);
21+
PopulateMetadataMethod.MakeGenericMethod(typeof(TTarget)).Invoke(null, new object[] { method, builder });
4922
}
5023
}
5124

src/Http/Http.Results/tools/ResultsOfTGenerator/Program.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,6 @@ static void GenerateClassFile(string classFilePath, int typeArgCount, bool inter
6060
writer.WriteLine();
6161

6262
// Usings
63-
writer.WriteLine("using System.Diagnostics.CodeAnalysis;");
6463
writer.WriteLine("using System.Reflection;");
6564
writer.WriteLine("using Microsoft.AspNetCore.Builder;");
6665
writer.WriteLine("using Microsoft.AspNetCore.Http.Metadata;");
@@ -98,7 +97,7 @@ static void GenerateClassFile(string classFilePath, int typeArgCount, bool inter
9897
// Type args
9998
for (int j = 1; j <= i; j++)
10099
{
101-
writer.Write($"[DynamicallyAccessedMembers(ResultsOfTHelper.RequireMethods)] TResult{j}");
100+
writer.Write($"TResult{j}");
102101
if (j != i)
103102
{
104103
writer.Write(", ");

0 commit comments

Comments
 (0)