Skip to content

Commit 0208b5f

Browse files
authored
Fix incorrect cast to IValidator[] (#112)
1 parent 770b7ad commit 0208b5f

1 file changed

Lines changed: 9 additions & 1 deletion

File tree

src/ValidationDefaults.cs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
global using HotChocolate.Resolvers;
66
global using FluentValidation;
77
global using FluentValidation.Results;
8+
using System.Linq;
89
using System.Runtime.CompilerServices;
910
using FluentValidation.Internal;
1011
using Microsoft.Extensions.DependencyInjection;
@@ -216,7 +217,14 @@ public static GetValidationContext<TInput> ValidationContextWithStrategy<TInput>
216217
IValidationContext validationContext,
217218
Type validatorType)
218219
{
219-
var validators = (IValidator[])inputValidatorContext.MiddlewareContext.Services.GetServices(validatorType);
220+
// The default DI container returns IValidator[] as the actual underlying type
221+
// However, this is not the case for some custom DI containers, so we add a fallback to cast the array manually
222+
var validatorsEnumerable = inputValidatorContext.MiddlewareContext.Services.GetServices(validatorType);
223+
224+
var validators = validatorsEnumerable as IValidator[]
225+
?? validatorsEnumerable
226+
.OfType<IValidator>()
227+
.ToArray();
220228

221229
if (validators is { Length: 0 })
222230
{

0 commit comments

Comments
 (0)