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 ()
{