Skip to content

Commit 1dd82ad

Browse files
Prefer concrete types for better performance
1 parent 024c491 commit 1dd82ad

File tree

15 files changed

+38
-40
lines changed

15 files changed

+38
-40
lines changed

src/AspNetCore/OData/src/Asp.Versioning.OData.ApiExplorer/ApiExplorer/ODataApiDescriptionProvider.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,7 @@ private static bool IsNavigationPropertyLink( ODataPathTemplate template ) =>
198198

199199
private static bool TryMatchModelVersion(
200200
ApiDescription description,
201-
IReadOnlyList<IODataRoutingMetadata> items,
201+
IODataRoutingMetadata[] items,
202202
[NotNullWhen( true )] out IODataRoutingMetadata? metadata )
203203
{
204204
if ( description.GetApiVersion() is not ApiVersion apiVersion )
@@ -215,7 +215,7 @@ private static bool TryMatchModelVersion(
215215
return false;
216216
}
217217

218-
for ( var i = 0; i < items.Count; i++ )
218+
for ( var i = 0; i < items.Length; i++ )
219219
{
220220
var item = items[i];
221221
var otherApiVersion = item.Model.GetApiVersion();

src/AspNetCore/OData/src/Asp.Versioning.OData.ApiExplorer/Conventions/ODataQueryOptionsConventionBuilder.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,20 +4,21 @@ namespace Asp.Versioning.Conventions;
44

55
using Microsoft.AspNetCore.Mvc.ApiExplorer;
66
using Microsoft.AspNetCore.Mvc.Controllers;
7+
using System.Reflection;
78

89
/// <content>
910
/// Provides additional implementation specific to Microsoft ASP.NET Core.
1011
/// </content>
1112
[CLSCompliant( false )]
1213
public partial class ODataQueryOptionsConventionBuilder
1314
{
14-
private static Type GetController( ApiDescription apiDescription )
15+
private static TypeInfo GetController( ApiDescription apiDescription )
1516
{
1617
if ( apiDescription.ActionDescriptor is ControllerActionDescriptor action )
1718
{
1819
return action.ControllerTypeInfo;
1920
}
2021

21-
return typeof( object );
22+
return typeof( object ).GetTypeInfo();
2223
}
2324
}

src/AspNetCore/OData/src/Asp.Versioning.OData/OData/Batch/ODataBatchPathMapping.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ private static void MergeRouteData( HttpContext context, RouteValueDictionary ro
9999
private ODataBatchHandler? SelectBestCandidate(
100100
HttpContext context,
101101
ref PathString path,
102-
IReadOnlyDictionary<ApiVersion, int> candidates,
102+
Dictionary<ApiVersion, int> candidates,
103103
RouteValueDictionary routeData )
104104
{
105105
if ( candidates.Count == 0 )

src/AspNetCore/OData/test/Asp.Versioning.OData.Tests/ApplicationModels/ODataControllerSpecificationTest.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,20 +35,20 @@ public void is_satisfied_by_should_return_expected_value( Type controllerType, b
3535
private sealed class NormalODataController : ODataController
3636
{
3737
[EnableQuery]
38-
public IActionResult Get() => Ok();
38+
public OkResult Get() => Ok();
3939
}
4040

4141
[ODataAttributeRouting]
4242
private sealed class CustomODataController : ControllerBase
4343
{
4444
[EnableQuery]
45-
public IActionResult Get() => Ok();
45+
public OkResult Get() => Ok();
4646
}
4747

4848
[Route( "api/test" )]
4949
private sealed class NonODataController : ControllerBase
5050
{
5151
[HttpGet]
52-
public IActionResult Get() => Ok();
52+
public OkResult Get() => Ok();
5353
}
5454
}

src/AspNetCore/WebApi/src/Asp.Versioning.Mvc.ApiExplorer/DefaultApiVersionDescriptionProvider.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ protected virtual IReadOnlyList<ApiVersionDescription> Describe( IReadOnlyList<A
6969
return descriptions.OrderBy( d => d.ApiVersion ).ToArray();
7070
}
7171

72-
private void BucketizeApiVersions( IReadOnlyList<ApiVersionMetadata> metadata, ISet<ApiVersion> supported, ISet<ApiVersion> deprecated )
72+
private void BucketizeApiVersions( IReadOnlyList<ApiVersionMetadata> metadata, HashSet<ApiVersion> supported, HashSet<ApiVersion> deprecated )
7373
{
7474
var declared = new HashSet<ApiVersion>();
7575
var advertisedSupported = new HashSet<ApiVersion>();
@@ -115,7 +115,7 @@ private void BucketizeApiVersions( IReadOnlyList<ApiVersionMetadata> metadata, I
115115
}
116116
}
117117

118-
private void AppendDescriptions( ICollection<ApiVersionDescription> descriptions, IEnumerable<ApiVersion> versions, bool deprecated )
118+
private void AppendDescriptions( List<ApiVersionDescription> descriptions, IEnumerable<ApiVersion> versions, bool deprecated )
119119
{
120120
foreach ( var version in versions )
121121
{

src/AspNetCore/WebApi/test/Asp.Versioning.Http.Tests/Routing/ApiVersionRouteConstraintTest.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -163,11 +163,11 @@ private static HttpContext NewHttpContext()
163163
return httpContext.Object;
164164
}
165165

166-
private static IRouteBuilder CreateRouteBuilder( IServiceProvider services )
166+
private static RouteBuilder CreateRouteBuilder( IServiceProvider services )
167167
{
168168
var app = new Mock<IApplicationBuilder>();
169169
app.SetupGet( a => a.ApplicationServices ).Returns( services );
170-
return new RouteBuilder( app.Object ) { DefaultHandler = new PassThroughRouter() };
170+
return new( app.Object ) { DefaultHandler = new PassThroughRouter() };
171171
}
172172

173173
private static IUrlHelper NewUrlHelper( string controller, string action, string version )

src/AspNetCore/WebApi/test/Asp.Versioning.Mvc.ApiExplorer.Tests/TestActionDescriptorCollectionProvider.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ private static ActionDescriptorCollection CreateActionDescriptors()
4141
return new( actions.ToArray(), 0 );
4242
}
4343

44-
private static void AddOrderActionDescriptors( ICollection<ActionDescriptor> actions )
44+
private static void AddOrderActionDescriptors( List<ActionDescriptor> actions )
4545
{
4646
// api version 0.9 and 1.0
4747
actions.Add(
@@ -106,7 +106,7 @@ private static void AddOrderActionDescriptors( ICollection<ActionDescriptor> act
106106
advertised: new ApiVersion[] { new( 4, 0 ) } ) );
107107
}
108108

109-
private static void AddPeopleActionDescriptors( ICollection<ActionDescriptor> actions )
109+
private static void AddPeopleActionDescriptors( List<ActionDescriptor> actions )
110110
{
111111
// api version 0.9 and 1.0
112112
actions.Add(

src/AspNetCore/WebApi/test/Asp.Versioning.Mvc.Tests/ApplicationModels/ApiBehaviorSpecificationTest.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,13 +33,13 @@ public void is_satisfied_by_should_return_expected_result( Type controllerType,
3333
private sealed class ApiBehaviorController : ControllerBase
3434
{
3535
[HttpGet]
36-
public IActionResult Get() => Ok();
36+
public OkResult Get() => Ok();
3737
}
3838

3939
[Route( "/" )]
4040
private sealed class NonApiBehaviorController : Controller
4141
{
4242
[HttpGet]
43-
public IActionResult Index() => View();
43+
public ViewResult Index() => View();
4444
}
4545
}

src/AspNetCore/WebApi/test/Asp.Versioning.Mvc.Tests/ReportApiVersionsAttributeTest.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ public async Task on_action_executing_should_not_add_headers_for_versionX2Dneutr
6666

6767
private static ActionExecutingContext CreateContext(
6868
ApiVersionMetadata metadata,
69-
ICollection<(Func<object, Task> Callback, object State)> onStartResponse )
69+
List<(Func<object, Task> Callback, object State)> onStartResponse )
7070
{
7171
var headers = new HeaderDictionary();
7272
var response = new Mock<HttpResponse>();

src/Client/src/Asp.Versioning.Http.Client/net#.0/DependencyInjection/IHttpClientBuilderExtensions.cs

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ private static ApiVersionHandler NewApiVersionHandler(
128128
return new( writer, apiVersion, notification, parser );
129129
}
130130

131-
private static IApiNotification? BuildFallbackNotification(
131+
private static ApiVersionHandlerLogger<ApiVersionHandler>? BuildFallbackNotification(
132132
IServiceProvider serviceProvider,
133133
IApiVersionParser? parser )
134134
{
@@ -142,9 +142,6 @@ private static ApiVersionHandler NewApiVersionHandler(
142142

143143
var enumerable = serviceProvider.GetService<ApiVersionHeaderEnumerable>();
144144

145-
return new ApiVersionHandlerLogger<ApiVersionHandler>(
146-
logger,
147-
parser ?? ApiVersionParser.Default,
148-
enumerable ?? new() );
145+
return new( logger, parser ?? ApiVersionParser.Default, enumerable ?? new() );
149146
}
150147
}

0 commit comments

Comments
 (0)