Validates a property, complex property or an entity using validation attributes the property or the complex/entity type is decorated with.
Note that this class is used for validating primitive properties using attributes declared on the property (property level validation) and complex properties and entities using attributes declared on the type (type level validation).