Example #1
0
        protected internal override bool ValidateSelfValueFromModifiedChild(PropertyEnumerator modifiedChildEnum, object value)
        {
            if (NoLinkWithChildren)
            {
                return(true);
            }

            if (Validator != null)
            {
                string             str       = "";
                PropertyEnumerator selfEnum  = modifiedChildEnum.Parent;
                PropertyEnumerator childEnum = selfEnum.Children;
                while (childEnum != childEnum.RightBound)
                {
                    if (childEnum.Equals(modifiedChildEnum))
                    {
                        if (value is string)
                        {
                            str += (value as string);
                        }
                        else
                        {
                            PropertyTypeDescriptorContext context = childEnum.Property.Value.GetTypeDescriptorContext(childEnum);
                            str += (string)TypeDescriptor.GetConverter(value).ConvertTo(context,
                                                                                        childEnum.Property.Value.CultureInfo, value, typeof(string));
                        }
                    }
                    else
                    {
                        str += childEnum.Property.Value.GetStringValue();
                    }
                    childEnum.MoveNext();

                    if (childEnum != childEnum.RightBound)
                    {
                        str += GroupedValueSeparator;
                        str += " ";
                    }
                }

                if (Validator.Check(str, false) == false)
                {
                    return(false);
                }
            }

            return(true);
        }