Skip to content

Commit d635298

Browse files
committed
Extracted extension method for better readability in endpoint routing (#326)
1 parent da2f223 commit d635298

File tree

2 files changed

+21
-13
lines changed

2 files changed

+21
-13
lines changed

src/MyTested.AspNetCore.Mvc.Abstractions/Internal/Application/ApplicationBuilderMock.cs

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
using System;
44
using System.Collections.Generic;
55
using System.Linq;
6-
using System.Reflection;
76
using System.Threading.Tasks;
87
using Microsoft.AspNetCore.Builder;
98
using Microsoft.AspNetCore.Http;
@@ -132,12 +131,7 @@ private void CheckForEndpointRouting(IServiceProvider serviceProvider)
132131

133132
private void ExtractEndpointRoutes(Func<RequestDelegate, RequestDelegate> middleware)
134133
{
135-
var middlewareTypeField = middleware
136-
.Target
137-
.GetType()
138-
.GetTypeInfo()
139-
.DeclaredFields
140-
.FirstOrDefault(m => m.Name == "middleware");
134+
var middlewareTypeField = middleware.GetTargetField("middleware");
141135

142136
if (!(middlewareTypeField?.GetValue(middleware.Target) is Type middlewareType)
143137
|| middlewareType.Name != "EndpointMiddleware")
@@ -232,12 +226,7 @@ private void ExtractEndpointRoutes(Func<RequestDelegate, RequestDelegate> middle
232226

233227
private void ExtractLegacyRoutes(Func<RequestDelegate, RequestDelegate> middleware)
234228
{
235-
var middlewareArguments = middleware
236-
.Target
237-
.GetType()
238-
.GetTypeInfo()
239-
.DeclaredFields
240-
.FirstOrDefault(m => m.Name == "args");
229+
var middlewareArguments = middleware.GetTargetField("args");
241230

242231
if (middlewareArguments?.GetValue(middleware.Target) is object[] argumentsValues)
243232
{
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
namespace MyTested.AspNetCore.Mvc.Utilities.Extensions
2+
{
3+
using System;
4+
using System.Linq;
5+
using System.Reflection;
6+
7+
public static class FuncExtensions
8+
{
9+
public static FieldInfo GetTargetField<T, TResult>(
10+
this Func<T, TResult> func,
11+
string fieldName)
12+
=> func
13+
.Target
14+
.GetType()
15+
.GetTypeInfo()
16+
.DeclaredFields
17+
.FirstOrDefault(m => m.Name == fieldName);
18+
}
19+
}

0 commit comments

Comments
 (0)