From 0b5f24ea0494dc39f87aaca883c662a67b8c98bb Mon Sep 17 00:00:00 2001 From: JCH2k Date: Fri, 22 Apr 2022 18:02:16 +0200 Subject: [PATCH] Fixed validation with parameter for registrations without factory --- .../Validation/IocValidator.cs | 6 ++++- .../IocValidatorTest.cs | 26 +++++++++++++++---- 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/LightweightIocContainer/Validation/IocValidator.cs b/LightweightIocContainer/Validation/IocValidator.cs index 231e801..6381704 100644 --- a/LightweightIocContainer/Validation/IocValidator.cs +++ b/LightweightIocContainer/Validation/IocValidator.cs @@ -61,7 +61,11 @@ namespace LightweightIocContainer.Validation .ForEach(p => TryResolve(registration.InterfaceType, p, validationExceptions)); } else - TryResolve(registration.InterfaceType, null, validationExceptions); + { + var parameters = _parameters.Where(p => p.type == registration.InterfaceType); + var arguments = parameters.Select(p => p.parameter).ToArray(); + TryResolve(registration.InterfaceType, arguments, validationExceptions); + } } if (validationExceptions.Any()) diff --git a/Test.LightweightIocContainer/IocValidatorTest.cs b/Test.LightweightIocContainer/IocValidatorTest.cs index a9037d3..f423d3d 100644 --- a/Test.LightweightIocContainer/IocValidatorTest.cs +++ b/Test.LightweightIocContainer/IocValidatorTest.cs @@ -45,12 +45,17 @@ namespace Test.LightweightIocContainer ITest Create(); } - private class TestInstaller : IIocInstaller + private class TestInstallerNoFactory : IIocInstaller + { + public void Install(IRegistrationCollector registration) => registration.Add(); + } + + private class TestInstallerWithFactory : IIocInstaller { public void Install(IRegistrationCollector registration) => registration.Add().WithFactory(); } - private class InvalidTestInstaller : IIocInstaller + private class TestInstallerWithInvalidFactory : IIocInstaller { public void Install(IRegistrationCollector registration) => registration.Add().WithFactory(); } @@ -59,7 +64,18 @@ namespace Test.LightweightIocContainer public void TestValidate() { IocContainer iocContainer = new(); - iocContainer.Install(new TestInstaller()); + iocContainer.Install(new TestInstallerNoFactory()); + + IocValidator validator = new(iocContainer); + + validator.Validate(); + } + + [Test] + public void TestValidate_WithFactory() + { + IocContainer iocContainer = new(); + iocContainer.Install(new TestInstallerWithFactory()); IocValidator validator = new(iocContainer); @@ -70,7 +86,7 @@ namespace Test.LightweightIocContainer public void TestValidateWithParameter() { IocContainer iocContainer = new(); - iocContainer.Install(new TestInstaller()); + iocContainer.Install(new TestInstallerNoFactory()); IocValidator validator = new(iocContainer); @@ -88,7 +104,7 @@ namespace Test.LightweightIocContainer public void TestValidateInvalidFactory() { IocContainer iocContainer = new(); - iocContainer.Install(new InvalidTestInstaller()); + iocContainer.Install(new TestInstallerWithInvalidFactory()); IocValidator validator = new(iocContainer);