Index: CachedValidationRegistry.cs
===================================================================
--- CachedValidationRegistry.cs	(revision 5717)
+++ CachedValidationRegistry.cs	(working copy)
@@ -109,7 +109,7 @@
 
 			if (builders == null)
 			{
-				builders = property.GetCustomAttributes(typeof(IValidatorBuilder), true);
+				builders = GetValidatorBuildersForProperty(targetType, property);
 
 				// Attribute order cannot be guaranted in C#
 				// this way we assure there order by Type Name
@@ -192,6 +192,24 @@
 			return targetType.GetProperties();
 		}
 
+		/// <summary>
+		/// Gets IValidatorBuilders for the specified targetType and property
+		/// </summary>
+		/// <param name="targetType">the targetType</param>
+		/// <param name="property">the property</param>
+		/// <returns>array of IValidatorBuilders</returns>
+		protected virtual object[] GetValidatorBuildersForProperty(Type targetType, PropertyInfo property)
+		{
+			ArrayList result = new ArrayList();
+			Attribute[] attributes = Attribute.GetCustomAttributes(property, true);
+			foreach (Attribute attribute in attributes)
+			{
+				if (attribute is IValidatorBuilder)
+					result.Add(attribute);
+			}
+			return result.ToArray();
+		}
+
 		private static bool IsValidatorOnPhase(IValidator validator, RunWhen when)
 		{
 			if (validator.RunWhen == RunWhen.Everytime) return true;
