private void VisitEnumerable(string propertyName, object propertyVal, IDtoValidatorResult dtoValidatorResult)
        {
            IDtoValidator dtoValidator;
            var           enumerator = ((IEnumerable)propertyVal).GetEnumerator();

            int index = 0;

            while (enumerator.MoveNext())
            {
                if (index == 0)
                {
                    dtoValidator = _dtoValidatorFactory.TryCreate(enumerator.Current.GetType());
                    if (dtoValidator == null)
                    {
                        break;                         //For now assume that types in Enumerable are all of same type
                    }
                }

                var result = Validate(enumerator.Current);

                if (!result.IsValid)
                {
                    dtoValidatorResult.AddArgumentErrors(result.ArgumentErrors);
                    result.AddPrefixToArgumentErrorNames(propertyName + "[" + index + "]" + ".");
                }


                index++;
            }
        }
        private void VisitSingle(string propertyName, object propertyValue, IDtoValidatorResult dtoValidatorResult)
        {
            var result = Validate(propertyValue);

            if (!result.IsValid)
            {
                dtoValidatorResult.AddArgumentErrors(result.ArgumentErrors);

                dtoValidatorResult.AddPrefixToArgumentErrorNames(propertyName + ".");
            }
        }