Skip to content

Commit bd2728c

Browse files
committed
Extend support to 8 arguments
1 parent 04f62b6 commit bd2728c

File tree

2 files changed

+17
-1
lines changed

2 files changed

+17
-1
lines changed

src/JSInterop/Microsoft.JSInterop/src/Infrastructure/JSFunctionReference.cs

+16
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,8 @@ private static InvalidOperationException CreateInvalidTypeParameterException(Typ
122122
var gd when gd == typeof(Func<,,,,>) => nameof(Invoke4),
123123
var gd when gd == typeof(Func<,,,,,>) => nameof(Invoke5),
124124
var gd when gd == typeof(Func<,,,,,,>) => nameof(Invoke6),
125+
var gd when gd == typeof(Func<,,,,,,,>) => nameof(Invoke7),
126+
var gd when gd == typeof(Func<,,,,,,,,>) => nameof(Invoke8),
125127
_ => throw CreateInvalidTypeParameterException(delegateType)
126128
};
127129

@@ -134,6 +136,8 @@ private static InvalidOperationException CreateInvalidTypeParameterException(Typ
134136
var gd when gd == typeof(Func<,,,,>) => nameof(InvokeTask4),
135137
var gd when gd == typeof(Func<,,,,,>) => nameof(InvokeTask5),
136138
var gd when gd == typeof(Func<,,,,,,>) => nameof(InvokeTask6),
139+
var gd when gd == typeof(Func<,,,,,,,>) => nameof(InvokeTask7),
140+
var gd when gd == typeof(Func<,,,,,,,,>) => nameof(InvokeTask8),
137141
_ => throw CreateInvalidTypeParameterException(delegateType)
138142
};
139143

@@ -146,6 +150,8 @@ private static InvalidOperationException CreateInvalidTypeParameterException(Typ
146150
var gd when gd == typeof(Func<,,,,>) => nameof(InvokeVoid4),
147151
var gd when gd == typeof(Func<,,,,,>) => nameof(InvokeVoid5),
148152
var gd when gd == typeof(Func<,,,,,,>) => nameof(InvokeVoid6),
153+
var gd when gd == typeof(Func<,,,,,,,>) => nameof(InvokeVoid7),
154+
var gd when gd == typeof(Func<,,,,,,,,>) => nameof(InvokeVoid8),
149155
_ => throw CreateInvalidTypeParameterException(delegateType)
150156
};
151157

@@ -158,6 +164,8 @@ private static InvalidOperationException CreateInvalidTypeParameterException(Typ
158164
var gd when gd == typeof(Func<,,,,>) => nameof(InvokeVoidTask4),
159165
var gd when gd == typeof(Func<,,,,,>) => nameof(InvokeVoidTask5),
160166
var gd when gd == typeof(Func<,,,,,,>) => nameof(InvokeVoidTask6),
167+
var gd when gd == typeof(Func<,,,,,,,>) => nameof(InvokeVoidTask7),
168+
var gd when gd == typeof(Func<,,,,,,,,>) => nameof(InvokeVoidTask8),
161169
_ => throw CreateInvalidTypeParameterException(delegateType)
162170
};
163171

@@ -169,6 +177,8 @@ private static InvalidOperationException CreateInvalidTypeParameterException(Typ
169177
public ValueTask<TResult> Invoke4<T1, T2, T3, T4, [DynamicallyAccessedMembers(JsonSerialized)] TResult>(T1 arg1, T2 arg2, T3 arg3, T4 arg4) => _jsObjectReference.InvokeAsync<TResult>(string.Empty, [arg1, arg2, arg3, arg4]);
170178
public ValueTask<TResult> Invoke5<T1, T2, T3, T4, T5, [DynamicallyAccessedMembers(JsonSerialized)] TResult>(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5) => _jsObjectReference.InvokeAsync<TResult>(string.Empty, [arg1, arg2, arg3, arg4, arg5]);
171179
public ValueTask<TResult> Invoke6<T1, T2, T3, T4, T5, T6, [DynamicallyAccessedMembers(JsonSerialized)] TResult>(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6) => _jsObjectReference.InvokeAsync<TResult>(string.Empty, [arg1, arg2, arg3, arg4, arg5, arg6]);
180+
public ValueTask<TResult> Invoke7<T1, T2, T3, T4, T5, T6, T7, [DynamicallyAccessedMembers(JsonSerialized)] TResult>(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7) => _jsObjectReference.InvokeAsync<TResult>(string.Empty, [arg1, arg2, arg3, arg4, arg5, arg6, arg7]);
181+
public ValueTask<TResult> Invoke8<T1, T2, T3, T4, T5, T6, T7, T8, [DynamicallyAccessedMembers(JsonSerialized)] TResult>(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8) => _jsObjectReference.InvokeAsync<TResult>(string.Empty, [arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8]);
172182

173183
// Variants returning ValueTask using InvokeVoidAsync
174184
public ValueTask InvokeVoid0() => _jsObjectReference.InvokeVoidAsync(string.Empty);
@@ -178,6 +188,8 @@ private static InvalidOperationException CreateInvalidTypeParameterException(Typ
178188
public ValueTask InvokeVoid4<T1, T2, T3, T4>(T1 arg1, T2 arg2, T3 arg3, T4 arg4) => _jsObjectReference.InvokeVoidAsync(string.Empty, [arg1, arg2, arg3, arg4]);
179189
public ValueTask InvokeVoid5<T1, T2, T3, T4, T5>(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5) => _jsObjectReference.InvokeVoidAsync(string.Empty, [arg1, arg2, arg3, arg4, arg5]);
180190
public ValueTask InvokeVoid6<T1, T2, T3, T4, T5, T6>(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6) => _jsObjectReference.InvokeVoidAsync(string.Empty, [arg1, arg2, arg3, arg4, arg5, arg6]);
191+
public ValueTask InvokeVoid7<T1, T2, T3, T4, T5, T6, T7>(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7) => _jsObjectReference.InvokeVoidAsync(string.Empty, [arg1, arg2, arg3, arg4, arg5, arg6, arg7]);
192+
public ValueTask InvokeVoid8<T1, T2, T3, T4, T5, T6, T7, T8>(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8) => _jsObjectReference.InvokeVoidAsync(string.Empty, [arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8]);
181193

182194
// Variants returning Task<T> using InvokeAsync
183195
public Task<TResult> InvokeTask0<[DynamicallyAccessedMembers(JsonSerialized)] TResult>() => _jsObjectReference.InvokeAsync<TResult>(string.Empty, []).AsTask();
@@ -187,6 +199,8 @@ private static InvalidOperationException CreateInvalidTypeParameterException(Typ
187199
public Task<TResult> InvokeTask4<T1, T2, T3, T4, [DynamicallyAccessedMembers(JsonSerialized)] TResult>(T1 arg1, T2 arg2, T3 arg3, T4 arg4) => _jsObjectReference.InvokeAsync<TResult>(string.Empty, [arg1, arg2, arg3, arg4]).AsTask();
188200
public Task<TResult> InvokeTask5<T1, T2, T3, T4, T5, [DynamicallyAccessedMembers(JsonSerialized)] TResult>(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5) => _jsObjectReference.InvokeAsync<TResult>(string.Empty, [arg1, arg2, arg3, arg4, arg5]).AsTask();
189201
public Task<TResult> InvokeTask6<T1, T2, T3, T4, T5, T6, [DynamicallyAccessedMembers(JsonSerialized)] TResult>(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6) => _jsObjectReference.InvokeAsync<TResult>(string.Empty, [arg1, arg2, arg3, arg4, arg5, arg6]).AsTask();
202+
public Task<TResult> InvokeTask7<T1, T2, T3, T4, T5, T6, T7, [DynamicallyAccessedMembers(JsonSerialized)] TResult>(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7) => _jsObjectReference.InvokeAsync<TResult>(string.Empty, [arg1, arg2, arg3, arg4, arg5, arg6, arg7]).AsTask();
203+
public Task<TResult> InvokeTask8<T1, T2, T3, T4, T5, T6, T7, T8, [DynamicallyAccessedMembers(JsonSerialized)] TResult>(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8) => _jsObjectReference.InvokeAsync<TResult>(string.Empty, [arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8]).AsTask();
190204

191205
// Variants returning Task using InvokeVoidAsync
192206
public Task InvokeVoidTask0() => _jsObjectReference.InvokeVoidAsync(string.Empty).AsTask();
@@ -196,4 +210,6 @@ private static InvalidOperationException CreateInvalidTypeParameterException(Typ
196210
public Task InvokeVoidTask4<T1, T2, T3, T4>(T1 arg1, T2 arg2, T3 arg3, T4 arg4) => _jsObjectReference.InvokeVoidAsync(string.Empty, [arg1, arg2, arg3, arg4]).AsTask();
197211
public Task InvokeVoidTask5<T1, T2, T3, T4, T5>(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5) => _jsObjectReference.InvokeVoidAsync(string.Empty, [arg1, arg2, arg3, arg4, arg5]).AsTask();
198212
public Task InvokeVoidTask6<T1, T2, T3, T4, T5, T6>(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6) => _jsObjectReference.InvokeVoidAsync(string.Empty, [arg1, arg2, arg3, arg4, arg5, arg6]).AsTask();
213+
public Task InvokeVoidTask7<T1, T2, T3, T4, T5, T6, T7>(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7) => _jsObjectReference.InvokeVoidAsync(string.Empty, [arg1, arg2, arg3, arg4, arg5, arg6, arg7]).AsTask();
214+
public Task InvokeVoidTask8<T1, T2, T3, T4, T5, T6, T7, T8>(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8) => _jsObjectReference.InvokeVoidAsync(string.Empty, [arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8]).AsTask();
199215
}

src/JSInterop/Microsoft.JSInterop/test/JSObjectReferenceExtensionsTest.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@ public void AsAsyncFunction_WithFuncWithTooManyParams_Throws()
158158
var jsObjectReference = new JSObjectReference(jsRuntime, 1);
159159

160160
// Act/Assert
161-
Assert.Throws<InvalidOperationException>(jsObjectReference.AsAsyncFunction<Func<int, int, int, int, int, int, int, int, int>>);
161+
Assert.Throws<InvalidOperationException>(jsObjectReference.AsAsyncFunction<Func<int, int, int, int, int, int, int, int, int, Task>>);
162162
}
163163

164164
class TestJSRuntime : JSInProcessRuntime

0 commit comments

Comments
 (0)