diff --git a/src/Spring/Spring.Core/Core/MethodParametersCriteria.cs b/src/Spring/Spring.Core/Core/MethodParametersCriteria.cs index 93abcc1d..12ec0a34 100644 --- a/src/Spring/Spring.Core/Core/MethodParametersCriteria.cs +++ b/src/Spring/Spring.Core/Core/MethodParametersCriteria.cs @@ -43,7 +43,7 @@ namespace Spring.Core /// array to the overloaded constructor. ///

/// - /// Rick Evans + /// Rick Evans /// Bruno Baia public class MethodParametersCriteria : ICriteria { @@ -90,30 +90,30 @@ namespace Spring.Core /// by this instance; false if not or the supplied is null. /// public bool IsSatisfied(object datum) - { - bool satisfied = false; - MethodInfo method = datum as MethodInfo; - if (method != null) - { - ParameterInfo[] parameterInfosBeingChecked = method.GetParameters(); - if (parameterInfosBeingChecked != null - && parameterInfosBeingChecked.Length == _parameters.Length) - { - satisfied = true; - for (int i = 0; i < _parameters.Length; ++i) - { - foreach (ParameterInfo paramInfo in parameterInfosBeingChecked) - { - if (paramInfo.ParameterType == _parameters[i]) - { - satisfied = true; - continue; - } - satisfied = false; - } - } - } - } + { + bool satisfied = false; + MethodInfo method = datum as MethodInfo; + if (method != null) + { + ParameterInfo[] parameterInfosBeingChecked = method.GetParameters(); + if (parameterInfosBeingChecked != null + && parameterInfosBeingChecked.Length == _parameters.Length) + { + satisfied = true; + for (int i = 0; i < _parameters.Length; ++i) + { + if (parameterInfosBeingChecked[i].ParameterType == _parameters[i]) + { + satisfied = true; + } + else + { + satisfied = false; + break; + } + } + } + } return satisfied; } diff --git a/test/Spring/Spring.Core.Tests/Core/MethodParametersCriteriaTests.cs b/test/Spring/Spring.Core.Tests/Core/MethodParametersCriteriaTests.cs index db8c5e71..3677a1eb 100644 --- a/test/Spring/Spring.Core.Tests/Core/MethodParametersCriteriaTests.cs +++ b/test/Spring/Spring.Core.Tests/Core/MethodParametersCriteriaTests.cs @@ -52,6 +52,15 @@ namespace Spring.Core Assert.IsTrue (criteria.IsSatisfied (method), "Was not satisified with a method that takes no parameters by default."); } + [Test] + public void IsNotSatisfiedWhenOnlyFinalParamMatches() + { + MethodParametersCriteria criteria = new MethodParametersCriteria( + new Type[] { typeof(object), typeof(object), typeof(TestObject) }); + MethodInfo method = GetType().GetMethod("BoJangles"); + Assert.IsFalse(criteria.IsSatisfied(method), "Was satisified with a method that only matches on the final parameter."); + } + [Test] public void IsSatisfied () {