XebiaLabs.Deployit.UI.Validation.ValidatableViewModel.ValidatableViewModel C# (CSharp) Method

ValidatableViewModel() public method

public ValidatableViewModel ( ) : System
return System
        public ValidatableViewModel()
        {
            var props = GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance);

            _validationAttributeDictionary = new Dictionary<PropertyInfo, List<IValidationItem>>();

            foreach (var property in props)
            {
                var validationItems = new List<IValidationItem>();
                var attributes =
                    property.GetCustomAttributes(typeof(ValidationAttribute), true)
                        .Cast<ValidationAttribute>()
                        .ToList();

                var propertyName = property.Name;
                if (attributes.Count > 0)
                {
                    validationItems.AddRange(
                        attributes.Select(
                            attribute => new AttributeValidationItem(attribute, propertyName) as IValidationItem));
                }

                var methodName = string.Format("Validate{0}", propertyName);
                var validationMethod = GetType()
                    .GetMethod(methodName, BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance, null,
                        new[] {property.PropertyType}, new ParameterModifier[] {});
                if (validationMethod != null)
                {
                    validationItems.Add(new MethodValidationItem(validationMethod));
                }
                if (validationItems.Count > 0)
                {
                    _validationAttributeDictionary.Add(property, validationItems);
                }
            }
        }