HandlerSignature8<T1,...,T8> implements IHandlerSignature for command handlers with eight parameters. Its Validate method checks the MethodDescription return type and attempts to create a closed delegate of either Func<T1..T8, CommandResult> or Func<T1..T8, Task<CommandResult>> to verify the method can be bound without invoking it.
namespace SboxSuperuser.Engine.CommandDiscovery;
internal sealed class HandlerSignature8<T1, T2, T3, T4, T5, T6, T7, T8> : IHandlerSignature
{
/// <summary>Checks closed delegate binding without executing the handler.</summary>
public void Validate( Sandbox.MethodDescription method )
{
if ( method.ReturnType == typeof( CommandResult ) )
{
_ = method.CreateDelegate<Func<T1, T2, T3, T4, T5, T6, T7, T8, CommandResult>>();
}
else
{
_ = method.CreateDelegate<Func<T1, T2, T3, T4, T5, T6, T7, T8, Task<CommandResult>>>();
}
}
}