mirror of
https://github.com/AlexMacocian/SystemExtensions.git
synced 2026-07-16 14:39:28 +00:00
29 lines
958 B
C#
29 lines
958 B
C#
using Microsoft.Extensions.Logging;
|
|
using Slim.Resolvers;
|
|
|
|
namespace System.Net.WebSockets;
|
|
public sealed class ClientWebSocketResolver : IDependencyResolver
|
|
{
|
|
private static readonly Type ClientType = typeof(ClientWebSocket<>);
|
|
private static readonly Type LoggerType = typeof(ILogger<>);
|
|
|
|
public bool CanResolve(Type type)
|
|
{
|
|
if (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(IClientWebSocket<>))
|
|
{
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
public object Resolve(Slim.IServiceProvider serviceProvider, Type type)
|
|
{
|
|
var typedClientType = ClientType.MakeGenericType(type.GetGenericArguments());
|
|
var typedLoggerType = LoggerType.MakeGenericType(type.GetGenericArguments());
|
|
var logger = serviceProvider.GetService(typedLoggerType);
|
|
var client = Activator.CreateInstance(typedClientType, new object[] { logger });
|
|
return client;
|
|
}
|
|
}
|