RSCG – TypedSignalR.Client
name | TypedSignalR.Client |
nuget | https://www.nuget.org/packages/TypedSignalR.Client/ |
link | https://github.com/nenoNaninu/TypedSignalR.Client |
author | nenoNaninu |
Creating typed Signal R clients
This is how you can use TypedSignalR.Client .
The code that you start with is
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net8.0</TargetFramework> <ImplicitUsings>enable</ImplicitUsings> <Nullable>enable</Nullable> </PropertyGroup> <ItemGroup> <PackageReference Include="Microsoft.AspNetCore.SignalR.Client" Version="6.0.1" /> <PackageReference Include="TypedSignalR.Client" Version="3.6.0"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> </PackageReference> </ItemGroup> <ItemGroup> <ProjectReference Include="..\TestSignalRCommon\TestSignalRCommon.csproj" /> </ItemGroup> <PropertyGroup> <EmitCompilerGeneratedFiles>true</EmitCompilerGeneratedFiles> <CompilerGeneratedFilesOutputPath>$(BaseIntermediateOutputPath)\GX</CompilerGeneratedFilesOutputPath> </PropertyGroup> </Project>
The code that you will use is
// See https://aka.ms/new-console-template for more information using Microsoft.AspNetCore.SignalR.Client; using TestSignalRCommon; using TestSignalRConsole; Console.WriteLine("Hello,World!"); await Task.Delay(5_000); HubConnection _connection = new HubConnectionBuilder() .WithUrl("https://localhost:7302/ChatHub") .Build(); await _connection.StartAsync(); _connection.On<string,string>("ReceiveMessage",(user,message) => { Console.WriteLine($" from not typed {user}: {message}"); }); await Task.Delay(30_000); var h = TypedSignalR.Client.HubConnectionExtensions.CreateHubProxy<IHubMessage>(_connection); await h.SendMessage("console","message"); //TypedSignalR.Client.HubConnectionExtensions.Register<IHubMessage>(_connection,new ReceiverMessage()); Console.WriteLine("waiting for messages from Windows App"); var message = Console.ReadLine();
The code that is generated is
// <auto-generated> // THIS (.cs) FILE IS GENERATED BY TypedSignalR.Client // </auto-generated> #nullable enable #pragma warning disable CS1591 namespace TypedSignalR.Client { internal interface IHubConnectionObserver { global::System.Threading.Tasks.Task OnClosed(global::System.Exception? exception); global::System.Threading.Tasks.Task OnReconnected(string? connectionId); global::System.Threading.Tasks.Task OnReconnecting(global::System.Exception? exception); } internal interface IHubInvoker { } internal interface IHubInvokerFactory { } internal interface IHubInvokerFactory<out T> : IHubInvokerFactory { T CreateHubInvoker(global::Microsoft.AspNetCore.SignalR.Client.HubConnection connection,global::System.Threading.CancellationToken cancellationToken); } internal interface IReceiverBinder { } internal interface IReceiverBinder<in T> : IReceiverBinder { global::System.IDisposable Bind(global::Microsoft.AspNetCore.SignalR.Client.HubConnection connection,T receiver); } } #pragma warning restore CS1591
// <auto-generated> // THIS (.cs) FILE IS GENERATED BY TypedSignalR.Client // </auto-generated> #nullable enable #pragma warning disable CS1591 #pragma warning disable CS8767 #pragma warning disable CS8613 namespace TypedSignalR.Client { internal static partial class HubConnectionExtensions { private static partial global::System.Collections.Generic.Dictionary<global::System.Type,IReceiverBinder> CreateBinders() { var binders = new global::System.Collections.Generic.Dictionary<global::System.Type,IReceiverBinder>(); return binders; } } } #pragma warning restore CS8613 #pragma warning restore CS8767 #pragma warning restore CS1591
// <auto-generated> // THIS (.cs) FILE IS GENERATED BY TypedSignalR.Client // </auto-generated> #nullable enable #pragma warning disable CS1591 namespace TypedSignalR.Client { internal static partial class HubConnectionExtensions { public static THub CreateHubProxy<THub>(this global::Microsoft.AspNetCore.SignalR.Client.HubConnection connection,global::System.Threading.CancellationToken cancellationToken = default) { var factory = HubInvokerFactoryProvider.GetHubInvokerFactory<THub>(); if (factory is null) { throw new global::System.InvalidOperationException($"Failed to create a hub proxy. TypedSignalR.Client did not generate source code to create a hub proxy,which type is {typeof(THub)}."); } return factory.CreateHubInvoker(connection,cancellationToken); } public static global::System.IDisposable Register<TReceiver>(this global::Microsoft.AspNetCore.SignalR.Client.HubConnection connection,TReceiver receiver) { if (receiver is null) { throw new global::System.ArgumentNullException(nameof(receiver)); } if (typeof(TReceiver) == typeof(IHubConnectionObserver)) { return new HubConnectionObserverSubscription(connection,(IHubConnectionObserver)receiver); } var binder = ReceiverBinderProvider.GetReceiverBinder<TReceiver>(); if (binder is null) { throw new global::System.InvalidOperationException($"Failed to register a receiver. TypedSignalR.Client did not generate source code to register a receiver,which type is {typeof(TReceiver)}."); } var subscription = binder.Bind(connection,receiver); if (receiver is IHubConnectionObserver hubConnectionObserver) { subscription = new CompositeDisposable(new[] { subscription,new HubConnectionObserverSubscription(connection,hubConnectionObserver) }); } return subscription; } } internal static partial class HubConnectionExtensions { private static partial global::System.Collections.Generic.Dictionary<global::System.Type,IHubInvokerFactory> CreateFactories(); private static partial global::System.Collections.Generic.Dictionary<global::System.Type,IReceiverBinder> CreateBinders(); private static class HubInvokerFactoryProvider { private static readonly global::System.Collections.Generic.Dictionary<global::System.Type,IHubInvokerFactory> Factories; static HubInvokerFactoryProvider() { Factories = CreateFactories(); } public static IHubInvokerFactory<T>? GetHubInvokerFactory<T>() { return Cache<T>.HubInvokerFactory; } private static class Cache<T> { public static readonly IHubInvokerFactory<T>? HubInvokerFactory = default; static Cache() { if (Factories.TryGetValue(typeof(T),out var hubInvokerFactory)) { HubInvokerFactory = hubInvokerFactory as IHubInvokerFactory<T>; } } } } private static class ReceiverBinderProvider { private static readonly global::System.Collections.Generic.Dictionary<global::System.Type,IReceiverBinder> Binders; static ReceiverBinderProvider() { Binders = CreateBinders(); } public static IReceiverBinder<T>? GetReceiverBinder<T>() { return Cache<T>.ReceiverBinder; } private static class Cache<T> { public static readonly IReceiverBinder<T>? ReceiverBinder = default; static Cache() { if (Binders.TryGetValue(typeof(T),out var receiverBinder)) { ReceiverBinder = receiverBinder as IReceiverBinder<T>; } } } } private sealed class HubConnectionObserverSubscription : global::System.IDisposable { private readonly global::Microsoft.AspNetCore.SignalR.Client.HubConnection _connection; private readonly IHubConnectionObserver _hubConnectionObserver; private int _disposed = 0; public HubConnectionObserverSubscription(global::Microsoft.AspNetCore.SignalR.Client.HubConnection connection,IHubConnectionObserver hubConnectionObserver) { _connection = connection; _hubConnectionObserver = hubConnectionObserver; _connection.Closed += hubConnectionObserver.OnClosed; _connection.Reconnected += hubConnectionObserver.OnReconnected; _connection.Reconnecting += hubConnectionObserver.OnReconnecting; } public void Dispose() { if (global::System.Threading.Interlocked.Exchange(ref _disposed,1) == 0) { _connection.Closed -= _hubConnectionObserver.OnClosed; _connection.Reconnected -= _hubConnectionObserver.OnReconnected; _connection.Reconnecting -= _hubConnectionObserver.OnReconnecting; } } } private sealed class CompositeDisposable : global::System.IDisposable { private readonly object _gate = new object(); private readonly global::System.Collections.Generic.List<global::System.IDisposable> _disposables; private bool _disposed; public CompositeDisposable() { _disposables = new global::System.Collections.Generic.List<global::System.IDisposable>(); } public CompositeDisposable(global::System.IDisposable[] disposables) { _disposables = new global::System.Collections.Generic.List<global::System.IDisposable>(disposables); } public CompositeDisposable(int capacity) { if (capacity < 0) { throw new global::System.ArgumentOutOfRangeException(nameof(capacity)); } _disposables = new global::System.Collections.Generic.List<global::System.IDisposable>(capacity); } public void Add(global::System.IDisposable item) { bool shouldDispose = false; lock (_gate) { shouldDispose = _disposed; if (!_disposed) { _disposables.Add(item); } } if (shouldDispose) { item.Dispose(); } } public void Dispose() { var currentDisposables = default(global::System.Collections.Generic.List<global::System.IDisposable>); lock (_gate) { if (_disposed) { return; } _disposed = true; currentDisposables = _disposables; } foreach (var item in currentDisposables) { if (item is not null) { item.Dispose(); } } currentDisposables.Clear(); } } // It is not possible to avoid boxing. // This is a limitation caused by the SignalR implementation. private static class HandlerConverter { public static global::System.Func<object?[],global::System.Threading.Tasks.Task> Convert(global::System.Func<global::System.Threading.Tasks.Task> handler) { return args => handler(); } public static global::System.Func<object?[],global::System.Threading.Tasks.Task> Convert<T1>(global::System.Func<T1,global::System.Threading.Tasks.Task> handler) { return args => handler((T1)args[0]!); } public static global::System.Func<object?[],global::System.Threading.Tasks.Task> Convert<T1,T2>(global::System.Func<T1,T2,global::System.Threading.Tasks.Task> handler) { return args => handler((T1)args[0]!,(T2)args[1]!); } public static global::System.Func<object?[],global::System.Threading.Tasks.Task> Convert<T1,T2,T3>(global::System.Func<T1,T2,T3,global::System.Threading.Tasks.Task> handler) { return args => handler((T1)args[0]!,(T2)args[1]!,(T3)args[2]!); } public static global::System.Func<object?[],global::System.Threading.Tasks.Task> Convert<T1,T2,T3,T4>(global::System.Func<T1,T2,T3,T4,global::System.Threading.Tasks.Task> handler) { return args => handler((T1)args[0]!,(T2)args[1]!,(T3)args[2]!,(T4)args[3]!); } public static global::System.Func<object?[],global::System.Threading.Tasks.Task> Convert<T1,T2,T3,T4,T5>(global::System.Func<T1,T2,T3,T4,T5,global::System.Threading.Tasks.Task> handler) { return args => handler((T1)args[0]!,(T2)args[1]!,(T3)args[2]!,(T4)args[3]!,(T5)args[4]!); } public static global::System.Func<object?[],global::System.Threading.Tasks.Task> Convert<T1,T2,T3,T4,T5,T6>(global::System.Func<T1,T2,T3,T4,T5,T6,global::System.Threading.Tasks.Task> handler) { return args => handler((T1)args[0]!,(T2)args[1]!,(T3)args[2]!,(T4)args[3]!,(T5)args[4]!,(T6)args[5]!); } public static global::System.Func<object?[],global::System.Threading.Tasks.Task> Convert<T1,T2,T3,T4,T5,T6,T7>(global::System.Func<T1,T2,T3,T4,T5,T6,T7,global::System.Threading.Tasks.Task> handler) { return args => handler((T1)args[0]!,(T2)args[1]!,(T3)args[2]!,(T4)args[3]!,(T5)args[4]!,(T6)args[5]!,(T7)args[6]!); } public static global::System.Func<object?[],global::System.Threading.Tasks.Task> Convert<T1,T2,T3,T4,T5,T6,T7,T8>(global::System.Func<T1,T2,T3,T4,T5,T6,T7,T8,global::System.Threading.Tasks.Task> handler) { return args => handler((T1)args[0]!,(T2)args[1]!,(T3)args[2]!,(T4)args[3]!,(T5)args[4]!,(T6)args[5]!,(T7)args[6]!,(T8)args[7]!); } public static global::System.Func<object?[],global::System.Threading.Tasks.Task> Convert<T1,T2,T3,T4,T5,T6,T7,T8,T9>(global::System.Func<T1,T2,T3,T4,T5,T6,T7,T8,T9,global::System.Threading.Tasks.Task> handler) { return args => handler((T1)args[0]!,(T2)args[1]!,(T3)args[2]!,(T4)args[3]!,(T5)args[4]!,(T6)args[5]!,(T7)args[6]!,(T8)args[7]!,(T9)args[8]!); } public static global::System.Func<object?[],global::System.Threading.Tasks.Task> Convert<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10>(global::System.Func<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,global::System.Threading.Tasks.Task> handler) { return args => handler((T1)args[0]!,(T2)args[1]!,(T3)args[2]!,(T4)args[3]!,(T5)args[4]!,(T6)args[5]!,(T7)args[6]!,(T8)args[7]!,(T9)args[8]!,(T10)args[9]!); } public static global::System.Func<object?[],global::System.Threading.Tasks.Task> Convert<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11>(global::System.Func<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,global::System.Threading.Tasks.Task> handler) { return args => handler((T1)args[0]!,(T2)args[1]!,(T3)args[2]!,(T4)args[3]!,(T5)args[4]!,(T6)args[5]!,(T7)args[6]!,(T8)args[7]!,(T9)args[8]!,(T10)args[9]!,(T11)args[10]!); } public static global::System.Func<object?[],global::System.Threading.Tasks.Task> Convert<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12>(global::System.Func<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,global::System.Threading.Tasks.Task> handler) { return args => handler((T1)args[0]!,(T2)args[1]!,(T3)args[2]!,(T4)args[3]!,(T5)args[4]!,(T6)args[5]!,(T7)args[6]!,(T8)args[7]!,(T9)args[8]!,(T10)args[9]!,(T11)args[10]!,(T12)args[11]!); } public static global::System.Func<object?[],global::System.Threading.Tasks.Task> Convert<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13>(global::System.Func<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,global::System.Threading.Tasks.Task> handler) { return args => handler((T1)args[0]!,(T2)args[1]!,(T3)args[2]!,(T4)args[3]!,(T5)args[4]!,(T6)args[5]!,(T7)args[6]!,(T8)args[7]!,(T9)args[8]!,(T10)args[9]!,(T11)args[10]!,(T12)args[11]!,(T13)args[12]!); } public static global::System.Func<object?[],global::System.Threading.Tasks.Task> Convert<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14>(global::System.Func<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,global::System.Threading.Tasks.Task> handler) { return args => handler((T1)args[0]!,(T2)args[1]!,(T3)args[2]!,(T4)args[3]!,(T5)args[4]!,(T6)args[5]!,(T7)args[6]!,(T8)args[7]!,(T9)args[8]!,(T10)args[9]!,(T11)args[10]!,(T12)args[11]!,(T13)args[12]!,(T14)args[13]!); } public static global::System.Func<object?[],global::System.Threading.Tasks.Task> Convert<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15>(global::System.Func<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,global::System.Threading.Tasks.Task> handler) { return args => handler((T1)args[0]!,(T2)args[1]!,(T3)args[2]!,(T4)args[3]!,(T5)args[4]!,(T6)args[5]!,(T7)args[6]!,(T8)args[7]!,(T9)args[8]!,(T10)args[9]!,(T11)args[10]!,(T12)args[11]!,(T13)args[12]!,(T14)args[13]!,(T15)args[14]!); } public static global::System.Func<object?[],global::System.Threading.Tasks.Task> Convert<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16>(global::System.Func<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,global::System.Threading.Tasks.Task> handler) { return args => handler((T1)args[0]!,(T2)args[1]!,(T3)args[2]!,(T4)args[3]!,(T5)args[4]!,(T6)args[5]!,(T7)args[6]!,(T8)args[7]!,(T9)args[8]!,(T10)args[9]!,(T11)args[10]!,(T12)args[11]!,(T13)args[12]!,(T14)args[13]!,(T15)args[14]!,(T16)args[15]!); } public static global::System.Func<object?[],global::System.Threading.Tasks.Task> Convert(global::System.Func<global::System.Threading.CancellationToken,global::System.Threading.Tasks.Task> handler) { return args => handler(default); } public static global::System.Func<object?[],global::System.Threading.Tasks.Task> Convert<T1>(global::System.Func<T1,global::System.Threading.CancellationToken,global::System.Threading.Tasks.Task> handler) { return args => handler((T1)args[0]!,default); } public static global::System.Func<object?[],global::System.Threading.Tasks.Task> Convert<T1,T2>(global::System.Func<T1,T2,global::System.Threading.CancellationToken,global::System.Threading.Tasks.Task> handler) { return args => handler((T1)args[0]!,(T2)args[1]!,default); } public static global::System.Func<object?[],global::System.Threading.Tasks.Task> Convert<T1,T2,T3>(global::System.Func<T1,T2,T3,global::System.Threading.CancellationToken,global::System.Threading.Tasks.Task> handler) { return args => handler((T1)args[0]!,(T2)args[1]!,(T3)args[2]!,default); } public static global::System.Func<object?[],global::System.Threading.Tasks.Task> Convert<T1,T2,T3,T4>(global::System.Func<T1,T2,T3,T4,global::System.Threading.CancellationToken,global::System.Threading.Tasks.Task> handler) { return args => handler((T1)args[0]!,(T2)args[1]!,(T3)args[2]!,(T4)args[3]!,default); } public static global::System.Func<object?[],global::System.Threading.Tasks.Task> Convert<T1,T2,T3,T4,T5>(global::System.Func<T1,T2,T3,T4,T5,global::System.Threading.CancellationToken,global::System.Threading.Tasks.Task> handler) { return args => handler((T1)args[0]!,(T2)args[1]!,(T3)args[2]!,(T4)args[3]!,(T5)args[4]!,default); } public static global::System.Func<object?[],global::System.Threading.Tasks.Task> Convert<T1,T2,T3,T4,T5,T6>(global::System.Func<T1,T2,T3,T4,T5,T6,global::System.Threading.CancellationToken,global::System.Threading.Tasks.Task> handler) { return args => handler((T1)args[0]!,(T2)args[1]!,(T3)args[2]!,(T4)args[3]!,(T5)args[4]!,(T6)args[5]!,default); } public static global::System.Func<object?[],global::System.Threading.Tasks.Task> Convert<T1,T2,T3,T4,T5,T6,T7>(global::System.Func<T1,T2,T3,T4,T5,T6,T7,global::System.Threading.CancellationToken,global::System.Threading.Tasks.Task> handler) { return args => handler((T1)args[0]!,(T2)args[1]!,(T3)args[2]!,(T4)args[3]!,(T5)args[4]!,(T6)args[5]!,(T7)args[6]!,default); } public static global::System.Func<object?[],global::System.Threading.Tasks.Task> Convert<T1,T2,T3,T4,T5,T6,T7,T8>(global::System.Func<T1,T2,T3,T4,T5,T6,T7,T8,global::System.Threading.CancellationToken,global::System.Threading.Tasks.Task> handler) { return args => handler((T1)args[0]!,(T2)args[1]!,(T3)args[2]!,(T4)args[3]!,(T5)args[4]!,(T6)args[5]!,(T7)args[6]!,(T8)args[7]!,default); } public static global::System.Func<object?[],global::System.Threading.Tasks.Task> Convert<T1,T2,T3,T4,T5,T6,T7,T8,T9>(global::System.Func<T1,T2,T3,T4,T5,T6,T7,T8,T9,global::System.Threading.CancellationToken,global::System.Threading.Tasks.Task> handler) { return args => handler((T1)args[0]!,(T2)args[1]!,(T3)args[2]!,(T4)args[3]!,(T5)args[4]!,(T6)args[5]!,(T7)args[6]!,(T8)args[7]!,(T9)args[8]!,default); } public static global::System.Func<object?[],global::System.Threading.Tasks.Task> Convert<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10>(global::System.Func<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,global::System.Threading.CancellationToken,global::System.Threading.Tasks.Task> handler) { return args => handler((T1)args[0]!,(T2)args[1]!,(T3)args[2]!,(T4)args[3]!,(T5)args[4]!,(T6)args[5]!,(T7)args[6]!,(T8)args[7]!,(T9)args[8]!,(T10)args[9]!,default); } public static global::System.Func<object?[],global::System.Threading.Tasks.Task> Convert<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11>(global::System.Func<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,global::System.Threading.CancellationToken,global::System.Threading.Tasks.Task> handler) { return args => handler((T1)args[0]!,(T2)args[1]!,(T3)args[2]!,(T4)args[3]!,(T5)args[4]!,(T6)args[5]!,(T7)args[6]!,(T8)args[7]!,(T9)args[8]!,(T10)args[9]!,(T11)args[10]!,default); } public static global::System.Func<object?[],global::System.Threading.Tasks.Task> Convert<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12>(global::System.Func<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,global::System.Threading.CancellationToken,global::System.Threading.Tasks.Task> handler) { return args => handler((T1)args[0]!,(T2)args[1]!,(T3)args[2]!,(T4)args[3]!,(T5)args[4]!,(T6)args[5]!,(T7)args[6]!,(T8)args[7]!,(T9)args[8]!,(T10)args[9]!,(T11)args[10]!,(T12)args[11]!,default); } public static global::System.Func<object?[],global::System.Threading.Tasks.Task> Convert<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13>(global::System.Func<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,global::System.Threading.CancellationToken,global::System.Threading.Tasks.Task> handler) { return args => handler((T1)args[0]!,(T2)args[1]!,(T3)args[2]!,(T4)args[3]!,(T5)args[4]!,(T6)args[5]!,(T7)args[6]!,(T8)args[7]!,(T9)args[8]!,(T10)args[9]!,(T11)args[10]!,(T12)args[11]!,(T13)args[12]!,default); } public static global::System.Func<object?[],global::System.Threading.Tasks.Task> Convert<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14>(global::System.Func<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,global::System.Threading.CancellationToken,global::System.Threading.Tasks.Task> handler) { return args => handler((T1)args[0]!,(T2)args[1]!,(T3)args[2]!,(T4)args[3]!,(T5)args[4]!,(T6)args[5]!,(T7)args[6]!,(T8)args[7]!,(T9)args[8]!,(T10)args[9]!,(T11)args[10]!,(T12)args[11]!,(T13)args[12]!,(T14)args[13]!,default); } public static global::System.Func<object?[],global::System.Threading.Tasks.Task> Convert<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15>(global::System.Func<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,global::System.Threading.CancellationToken,global::System.Threading.Tasks.Task> handler) { return args => handler((T1)args[0]!,(T2)args[1]!,(T3)args[2]!,(T4)args[3]!,(T5)args[4]!,(T6)args[5]!,(T7)args[6]!,(T8)args[7]!,(T9)args[8]!,(T10)args[9]!,(T11)args[10]!,(T12)args[11]!,(T13)args[12]!,(T14)args[13]!,(T15)args[14]!,default); } public static global::System.Func<object?[],global::System.Threading.Tasks.Task<TResult>> Convert<TResult>(global::System.Func<global::System.Threading.Tasks.Task<TResult>> handler) { return async args => { var result = await handler().ConfigureAwait(false); return result; }; } public static global::System.Func<object?[],global::System.Threading.Tasks.Task<TResult>> Convert<T1,TResult>(global::System.Func<T1,global::System.Threading.Tasks.Task<TResult>> handler) { return async args => { var result = await handler((T1)args[0]!).ConfigureAwait(false); return result; }; } public static global::System.Func<object?[],global::System.Threading.Tasks.Task<TResult>> Convert<T1,T2,TResult>(global::System.Func<T1,T2,global::System.Threading.Tasks.Task<TResult>> handler) { return async args => { var result = await handler((T1)args[0]!,(T2)args[1]!).ConfigureAwait(false); return result; }; } public static global::System.Func<object?[],global::System.Threading.Tasks.Task<TResult>> Convert<T1,T2,T3,TResult>(global::System.Func<T1,T2,T3,global::System.Threading.Tasks.Task<TResult>> handler) { return async args => { var result = await handler((T1)args[0]!,(T2)args[1]!,(T3)args[2]!).ConfigureAwait(false); return result; }; } public static global::System.Func<object?[],global::System.Threading.Tasks.Task<TResult>> Convert<T1,T2,T3,T4,TResult>(global::System.Func<T1,T2,T3,T4,global::System.Threading.Tasks.Task<TResult>> handler) { return async args => { var result = await handler((T1)args[0]!,(T2)args[1]!,(T3)args[2]!,(T4)args[3]!).ConfigureAwait(false); return result; }; } public static global::System.Func<object?[],global::System.Threading.Tasks.Task<TResult>> Convert<T1,T2,T3,T4,T5,TResult>(global::System.Func<T1,T2,T3,T4,T5,global::System.Threading.Tasks.Task<TResult>> handler) { return async args => { var result = await handler((T1)args[0]!,(T2)args[1]!,(T3)args[2]!,(T4)args[3]!,(T5)args[4]!).ConfigureAwait(false); return result; }; } public static global::System.Func<object?[],global::System.Threading.Tasks.Task<TResult>> Convert<T1,T2,T3,T4,T5,T6,TResult>(global::System.Func<T1,T2,T3,T4,T5,T6,global::System.Threading.Tasks.Task<TResult>> handler) { return async args => { var result = await handler((T1)args[0]!,(T2)args[1]!,(T3)args[2]!,(T4)args[3]!,(T5)args[4]!,(T6)args[5]!).ConfigureAwait(false); return result; }; } public static global::System.Func<object?[],global::System.Threading.Tasks.Task<TResult>> Convert<T1,T2,T3,T4,T5,T6,T7,TResult>(global::System.Func<T1,T2,T3,T4,T5,T6,T7,global::System.Threading.Tasks.Task<TResult>> handler) { return async args => { var result = await handler((T1)args[0]!,(T2)args[1]!,(T3)args[2]!,(T4)args[3]!,(T5)args[4]!,(T6)args[5]!,(T7)args[6]!).ConfigureAwait(false); return result; }; } public static global::System.Func<object?[],global::System.Threading.Tasks.Task<TResult>> Convert<T1,T2,T3,T4,T5,T6,T7,T8,TResult>(global::System.Func<T1,T2,T3,T4,T5,T6,T7,T8,global::System.Threading.Tasks.Task<TResult>> handler) { return async args => { var result = await handler((T1)args[0]!,(T2)args[1]!,(T3)args[2]!,(T4)args[3]!,(T5)args[4]!,(T6)args[5]!,(T7)args[6]!,(T8)args[7]!).ConfigureAwait(false); return result; }; } public static global::System.Func<object?[],global::System.Threading.Tasks.Task<TResult>> Convert<T1,T2,T3,T4,T5,T6,T7,T8,T9,TResult>(global::System.Func<T1,T2,T3,T4,T5,T6,T7,T8,T9,global::System.Threading.Tasks.Task<TResult>> handler) { return async args => { var result = await handler((T1)args[0]!,(T2)args[1]!,(T3)args[2]!,(T4)args[3]!,(T5)args[4]!,(T6)args[5]!,(T7)args[6]!,(T8)args[7]!,(T9)args[8]!).ConfigureAwait(false); return result; }; } public static global::System.Func<object?[],global::System.Threading.Tasks.Task<TResult>> Convert<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,TResult>(global::System.Func<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,global::System.Threading.Tasks.Task<TResult>> handler) { return async args => { var result = await handler((T1)args[0]!,(T2)args[1]!,(T3)args[2]!,(T4)args[3]!,(T5)args[4]!,(T6)args[5]!,(T7)args[6]!,(T8)args[7]!,(T9)args[8]!,(T10)args[9]!).ConfigureAwait(false); return result; }; } public static global::System.Func<object?[],global::System.Threading.Tasks.Task<TResult>> Convert<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,TResult>(global::System.Func<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,global::System.Threading.Tasks.Task<TResult>> handler) { return async args => { var result = await handler((T1)args[0]!,(T2)args[1]!,(T3)args[2]!,(T4)args[3]!,(T5)args[4]!,(T6)args[5]!,(T7)args[6]!,(T8)args[7]!,(T9)args[8]!,(T10)args[9]!,(T11)args[10]!).ConfigureAwait(false); return result; }; } public static global::System.Func<object?[],global::System.Threading.Tasks.Task<TResult>> Convert<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,TResult>(global::System.Func<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,global::System.Threading.Tasks.Task<TResult>> handler) { return async args => { var result = await handler((T1)args[0]!,(T2)args[1]!,(T3)args[2]!,(T4)args[3]!,(T5)args[4]!,(T6)args[5]!,(T7)args[6]!,(T8)args[7]!,(T9)args[8]!,(T10)args[9]!,(T11)args[10]!,(T12)args[11]!).ConfigureAwait(false); return result; }; } public static global::System.Func<object?[],global::System.Threading.Tasks.Task<TResult>> Convert<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,TResult>(global::System.Func<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,global::System.Threading.Tasks.Task<TResult>> handler) { return async args => { var result = await handler((T1)args[0]!,(T2)args[1]!,(T3)args[2]!,(T4)args[3]!,(T5)args[4]!,(T6)args[5]!,(T7)args[6]!,(T8)args[7]!,(T9)args[8]!,(T10)args[9]!,(T11)args[10]!,(T12)args[11]!,(T13)args[12]!).ConfigureAwait(false); return result; }; } public static global::System.Func<object?[],global::System.Threading.Tasks.Task<TResult>> Convert<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,TResult>(global::System.Func<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,global::System.Threading.Tasks.Task<TResult>> handler) { return async args => { var result = await handler((T1)args[0]!,(T2)args[1]!,(T3)args[2]!,(T4)args[3]!,(T5)args[4]!,(T6)args[5]!,(T7)args[6]!,(T8)args[7]!,(T9)args[8]!,(T10)args[9]!,(T11)args[10]!,(T12)args[11]!,(T13)args[12]!,(T14)args[13]!).ConfigureAwait(false); return result; }; } public static global::System.Func<object?[],global::System.Threading.Tasks.Task<TResult>> Convert<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,TResult>(global::System.Func<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,global::System.Threading.Tasks.Task<TResult>> handler) { return async args => { var result = await handler((T1)args[0]!,(T2)args[1]!,(T3)args[2]!,(T4)args[3]!,(T5)args[4]!,(T6)args[5]!,(T7)args[6]!,(T8)args[7]!,(T9)args[8]!,(T10)args[9]!,(T11)args[10]!,(T12)args[11]!,(T13)args[12]!,(T14)args[13]!,(T15)args[14]!).ConfigureAwait(false); return result; }; } public static global::System.Func<object?[],global::System.Threading.Tasks.Task<TResult>> Convert<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,TResult>(global::System.Func<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,global::System.Threading.Tasks.Task<TResult>> handler) { return async args => { var result = await handler((T1)args[0]!,(T2)args[1]!,(T3)args[2]!,(T4)args[3]!,(T5)args[4]!,(T6)args[5]!,(T7)args[6]!,(T8)args[7]!,(T9)args[8]!,(T10)args[9]!,(T11)args[10]!,(T12)args[11]!,(T13)args[12]!,(T14)args[13]!,(T15)args[14]!,(T16)args[15]!).ConfigureAwait(false); return result; }; } public static global::System.Func<object?[],global::System.Threading.Tasks.Task<TResult>> Convert<TResult>(global::System.Func<global::System.Threading.CancellationToken,global::System.Threading.Tasks.Task<TResult>> handler) { return async args => { var result = await handler(default).ConfigureAwait(false); return result; }; } public static global::System.Func<object?[],global::System.Threading.Tasks.Task<TResult>> Convert<T1,TResult>(global::System.Func<T1,global::System.Threading.CancellationToken,global::System.Threading.Tasks.Task<TResult>> handler) { return async args => { var result = await handler((T1)args[0]!,default).ConfigureAwait(false); return result; }; } public static global::System.Func<object?[],global::System.Threading.Tasks.Task<TResult>> Convert<T1,T2,TResult>(global::System.Func<T1,T2,global::System.Threading.CancellationToken,global::System.Threading.Tasks.Task<TResult>> handler) { return async args => { var result = await handler((T1)args[0]!,(T2)args[1]!,default).ConfigureAwait(false); return result; }; } public static global::System.Func<object?[],global::System.Threading.Tasks.Task<TResult>> Convert<T1,T2,T3,TResult>(global::System.Func<T1,T2,T3,global::System.Threading.CancellationToken,global::System.Threading.Tasks.Task<TResult>> handler) { return async args => { var result = await handler((T1)args[0]!,(T2)args[1]!,(T3)args[2]!,default).ConfigureAwait(false); return result; }; } public static global::System.Func<object?[],global::System.Threading.Tasks.Task<TResult>> Convert<T1,T2,T3,T4,TResult>(global::System.Func<T1,T2,T3,T4,global::System.Threading.CancellationToken,global::System.Threading.Tasks.Task<TResult>> handler) { return async args => { var result = await handler((T1)args[0]!,(T2)args[1]!,(T3)args[2]!,(T4)args[3]!,default).ConfigureAwait(false); return result; }; } public static global::System.Func<object?[],global::System.Threading.Tasks.Task<TResult>> Convert<T1,T2,T3,T4,T5,TResult>(global::System.Func<T1,T2,T3,T4,T5,global::System.Threading.CancellationToken,global::System.Threading.Tasks.Task<TResult>> handler) { return async args => { var result = await handler((T1)args[0]!,(T2)args[1]!,(T3)args[2]!,(T4)args[3]!,(T5)args[4]!,default).ConfigureAwait(false); return result; }; } public static global::System.Func<object?[],global::System.Threading.Tasks.Task<TResult>> Convert<T1,T2,T3,T4,T5,T6,TResult>(global::System.Func<T1,T2,T3,T4,T5,T6,global::System.Threading.CancellationToken,global::System.Threading.Tasks.Task<TResult>> handler) { return async args => { var result = await handler((T1)args[0]!,(T2)args[1]!,(T3)args[2]!,(T4)args[3]!,(T5)args[4]!,(T6)args[5]!,default).ConfigureAwait(false); return result; }; } public static global::System.Func<object?[],global::System.Threading.Tasks.Task<TResult>> Convert<T1,T2,T3,T4,T5,T6,T7,TResult>(global::System.Func<T1,T2,T3,T4,T5,T6,T7,global::System.Threading.CancellationToken,global::System.Threading.Tasks.Task<TResult>> handler) { return async args => { var result = await handler((T1)args[0]!,(T2)args[1]!,(T3)args[2]!,(T4)args[3]!,(T5)args[4]!,(T6)args[5]!,(T7)args[6]!,default).ConfigureAwait(false); return result; }; } public static global::System.Func<object?[],global::System.Threading.Tasks.Task<TResult>> Convert<T1,T2,T3,T4,T5,T6,T7,T8,TResult>(global::System.Func<T1,T2,T3,T4,T5,T6,T7,T8,global::System.Threading.CancellationToken,global::System.Threading.Tasks.Task<TResult>> handler) { return async args => { var result = await handler((T1)args[0]!,(T2)args[1]!,(T3)args[2]!,(T4)args[3]!,(T5)args[4]!,(T6)args[5]!,(T7)args[6]!,(T8)args[7]!,default).ConfigureAwait(false); return result; }; } public static global::System.Func<object?[],global::System.Threading.Tasks.Task<TResult>> Convert<T1,T2,T3,T4,T5,T6,T7,T8,T9,TResult>(global::System.Func<T1,T2,T3,T4,T5,T6,T7,T8,T9,global::System.Threading.CancellationToken,global::System.Threading.Tasks.Task<TResult>> handler) { return async args => { var result = await handler((T1)args[0]!,(T2)args[1]!,(T3)args[2]!,(T4)args[3]!,(T5)args[4]!,(T6)args[5]!,(T7)args[6]!,(T8)args[7]!,(T9)args[8]!,default).ConfigureAwait(false); return result; }; } public static global::System.Func<object?[],global::System.Threading.Tasks.Task<TResult>> Convert<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,TResult>(global::System.Func<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,global::System.Threading.CancellationToken,global::System.Threading.Tasks.Task<TResult>> handler) { return async args => { var result = await handler((T1)args[0]!,(T2)args[1]!,(T3)args[2]!,(T4)args[3]!,(T5)args[4]!,(T6)args[5]!,(T7)args[6]!,(T8)args[7]!,(T9)args[8]!,(T10)args[9]!,default).ConfigureAwait(false); return result; }; } public static global::System.Func<object?[],global::System.Threading.Tasks.Task<TResult>> Convert<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,TResult>(global::System.Func<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,global::System.Threading.CancellationToken,global::System.Threading.Tasks.Task<TResult>> handler) { return async args => { var result = await handler((T1)args[0]!,(T2)args[1]!,(T3)args[2]!,(T4)args[3]!,(T5)args[4]!,(T6)args[5]!,(T7)args[6]!,(T8)args[7]!,(T9)args[8]!,(T10)args[9]!,(T11)args[10]!,default).ConfigureAwait(false); return result; }; } public static global::System.Func<object?[],global::System.Threading.Tasks.Task<TResult>> Convert<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,TResult>(global::System.Func<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,global::System.Threading.CancellationToken,global::System.Threading.Tasks.Task<TResult>> handler) { return async args => { var result = await handler((T1)args[0]!,(T2)args[1]!,(T3)args[2]!,(T4)args[3]!,(T5)args[4]!,(T6)args[5]!,(T7)args[6]!,(T8)args[7]!,(T9)args[8]!,(T10)args[9]!,(T11)args[10]!,(T12)args[11]!,default).ConfigureAwait(false); return result; }; } public static global::System.Func<object?[],global::System.Threading.Tasks.Task<TResult>> Convert<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,TResult>(global::System.Func<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,global::System.Threading.CancellationToken,global::System.Threading.Tasks.Task<TResult>> handler) { return async args => { var result = await handler((T1)args[0]!,(T2)args[1]!,(T3)args[2]!,(T4)args[3]!,(T5)args[4]!,(T6)args[5]!,(T7)args[6]!,(T8)args[7]!,(T9)args[8]!,(T10)args[9]!,(T11)args[10]!,(T12)args[11]!,(T13)args[12]!,default).ConfigureAwait(false); return result; }; } public static global::System.Func<object?[],global::System.Threading.Tasks.Task<TResult>> Convert<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,TResult>(global::System.Func<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,global::System.Threading.CancellationToken,global::System.Threading.Tasks.Task<TResult>> handler) { return async args => { var result = await handler((T1)args[0]!,(T2)args[1]!,(T3)args[2]!,(T4)args[3]!,(T5)args[4]!,(T6)args[5]!,(T7)args[6]!,(T8)args[7]!,(T9)args[8]!,(T10)args[9]!,(T11)args[10]!,(T12)args[11]!,(T13)args[12]!,(T14)args[13]!,default).ConfigureAwait(false); return result; }; } public static global::System.Func<object?[],global::System.Threading.Tasks.Task<TResult>> Convert<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,TResult>(global::System.Func<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,global::System.Threading.CancellationToken,global::System.Threading.Tasks.Task<TResult>> handler) { return async args => { var result = await handler((T1)args[0]!,(T2)args[1]!,(T3)args[2]!,(T4)args[3]!,(T5)args[4]!,(T6)args[5]!,(T7)args[6]!,(T8)args[7]!,(T9)args[8]!,(T10)args[9]!,(T11)args[10]!,(T12)args[11]!,(T13)args[12]!,(T14)args[13]!,(T15)args[14]!,default).ConfigureAwait(false); return result; }; } } } } #pragma warning restore CS1591
// <auto-generated> // THIS (.cs) FILE IS GENERATED BY TypedSignalR.Client // </auto-generated> #nullable enable #pragma warning disable CS1591 #pragma warning disable CS8767 #pragma warning disable CS8613 namespace TypedSignalR.Client { internal static partial class HubConnectionExtensions { private sealed class HubInvokerFor_global__TestSignalRCommon_IHubMessage : global::TestSignalRCommon.IHubMessage,IHubInvoker { private readonly global::Microsoft.AspNetCore.SignalR.Client.HubConnection _connection; private readonly global::System.Threading.CancellationToken _cancellationToken; public HubInvokerFor_global__TestSignalRCommon_IHubMessage(global::Microsoft.AspNetCore.SignalR.Client.HubConnection connection,global::System.Threading.CancellationToken cancellationToken) { _connection = connection; _cancellationToken = cancellationToken; } public global::System.Threading.Tasks.Task SendMessage(string user,string message) { return global::Microsoft.AspNetCore.SignalR.Client.HubConnectionExtensions.InvokeCoreAsync(_connection,nameof(SendMessage),new object?[] { user,message },_cancellationToken); } } private sealed class HubInvokerFactoryFor_global__TestSignalRCommon_IHubMessage : IHubInvokerFactory<global::TestSignalRCommon.IHubMessage> { public global::TestSignalRCommon.IHubMessage CreateHubInvoker(global::Microsoft.AspNetCore.SignalR.Client.HubConnection connection,global::System.Threading.CancellationToken cancellationToken) { return new HubInvokerFor_global__TestSignalRCommon_IHubMessage(connection,cancellationToken); } } private static partial global::System.Collections.Generic.Dictionary<global::System.Type,IHubInvokerFactory> CreateFactories() { var factories = new global::System.Collections.Generic.Dictionary<global::System.Type,IHubInvokerFactory>(); factories.Add(typeof(global::TestSignalRCommon.IHubMessage),new HubInvokerFactoryFor_global__TestSignalRCommon_IHubMessage()); return factories; } } } #pragma warning restore CS8613 #pragma warning restore CS8767 #pragma warning restore CS1591
Code and pdf at
https://ignatandrei.github.io/RSCG_Examples/v2/docs/TypedSignalR.Client
Leave a Reply