We have a need within some of our logic to iterate through the properties of a model to auto-bind properties and want to extend the functionality to include the new dataanno
You do use the System.ComponentModel.DataAnnotations.Validator
class to validate objects.
This is because you are passing the source object to the Validate method, instead of the property value. The following is more likely to work as expected (though obviously not for indexed properties):
attrib.Validate(propertyInfo.GetValue(obj, null), propertyInfo.Name);
You would certainly have an easier time using the Validator class as Steven suggested, though.