mirror of
https://github.com/wiremock/WireMock.Net.git
synced 2026-03-20 16:44:31 +01:00
Add new package WireMock.Net.Extensions.Routing which provides minimal-API-style routing for WireMock.Net (#1344)
* Add new package WireMock.Net.Extensions.Routing * Update documentation for WireMock.Net.Extensions.Routing * Cleanup imports * Add header to all source files inside WireMock.Net.Extensions.Routing * Add header to all source files inside WireMock.Net.Extensions.Routing.Tests * Revert unintended changes * Remove redundant build configurations * Remove incorrect links from documentation * Update nuget package references * Revert unintended changes * Migrate to AwesomeAssertions * Remove redundant project reference * Adjust formatting * Migrate to primary constructor * Refactoring: rename delegate parameter * Abstract over JSON converter * Replace WireMock with WireMock.Net in comments * Move local functions to the bottom of the methods
This commit is contained in:
committed by
GitHub
parent
60eb519ae2
commit
be2ea67b89
@@ -0,0 +1,39 @@
|
||||
// Copyright © WireMock.Net
|
||||
|
||||
using System.Reflection;
|
||||
|
||||
namespace WireMock.Net.Extensions.Routing.Extensions;
|
||||
|
||||
internal static class TaskExtensions
|
||||
{
|
||||
[System.Diagnostics.CodeAnalysis.SuppressMessage(
|
||||
"Usage",
|
||||
"VSTHRD003:Avoid awaiting foreign Tasks",
|
||||
Justification = "Await is required here to transform base task to generic one.")]
|
||||
public static async Task<object?> ToGenericTaskAsync(this Task task)
|
||||
{
|
||||
await task;
|
||||
var taskType = task.GetType();
|
||||
if (!IsAssignableToGenericTaskType(taskType))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
return task
|
||||
.GetType()
|
||||
.GetProperty("Result", BindingFlags.Instance | BindingFlags.Public)!
|
||||
.GetValue(task);
|
||||
}
|
||||
|
||||
private static bool IsAssignableToGenericTaskType(Type type)
|
||||
{
|
||||
if (type.IsGenericType &&
|
||||
type.GetGenericTypeDefinition() == typeof(Task<>) &&
|
||||
type.GetGenericArguments()[0] != Type.GetType("System.Threading.Tasks.VoidTaskResult"))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
return type.BaseType is not null && IsAssignableToGenericTaskType(type.BaseType);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user