From 5d8c122476fc345dd1c4a3b89a3db2a72d4a330c Mon Sep 17 00:00:00 2001 From: "Simon G." Date: Thu, 19 Dec 2024 09:24:17 +0100 Subject: [PATCH] - fix validation of open generic type registrations --- .../IocValidator.cs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/LightweightIocContainer.Validation/IocValidator.cs b/LightweightIocContainer.Validation/IocValidator.cs index 12065eb..c4b7bb2 100644 --- a/LightweightIocContainer.Validation/IocValidator.cs +++ b/LightweightIocContainer.Validation/IocValidator.cs @@ -60,6 +60,21 @@ public class IocValidator(IocContainer iocContainer) private void TryResolve(Type type, object?[]? arguments, List validationExceptions, bool isFactoryResolve = false) { + if (type.ContainsGenericParameters) + { + List genericParameters = []; + + Type[] genericArguments = type.GetGenericArguments(); + foreach (Type genericArgument in genericArguments.Where(g => g.IsGenericParameter)) + { + Type[] genericParameterConstraints = genericArgument.GetGenericParameterConstraints(); + object mock = Substitute.For(genericParameterConstraints, []); + genericParameters.Add(mock.GetType()); + } + + type = type.MakeGenericType(genericParameters.ToArray()); + } + (bool success, object _, Exception? exception) = iocContainer.TryResolveNonGeneric(type, arguments, null, isFactoryResolve); if (success) return;