protected void SetPropertyValue(Control control, string propertyName, string propertyValue)
        {
            object obj2 = null;
            InstanceAndPropertyInfo memberInfo   = GetMemberInfo(control, propertyName);
            PropertyInfo            propertyInfo = memberInfo.PropertyInfo;
            TypeConverter           converter    = null;
            TypeConverterAttribute  attribute    = Attribute.GetCustomAttribute(propertyInfo, typeof(TypeConverterAttribute), true) as TypeConverterAttribute;

            if (attribute != null)
            {
                Type type = Type.GetType(attribute.ConverterTypeName, false);
                if (type != null)
                {
                    converter = (TypeConverter)Activator.CreateInstance(type);
                }
            }
            if ((converter != null) && converter.CanConvertFrom(typeof(string)))
            {
                obj2 = converter.ConvertFromInvariantString(propertyValue);
            }
            else
            {
                converter = TypeDescriptor.GetConverter(propertyInfo.PropertyType);
                if ((converter != null) && converter.CanConvertFrom(typeof(string)))
                {
                    obj2 = converter.ConvertFromInvariantString(propertyValue);
                }
            }
            propertyInfo.SetValue(memberInfo.Instance, obj2, null);
        }
        private void ClearDefaults(Control control, string propertyName)
        {
            InstanceAndPropertyInfo memberInfo = GetMemberInfo(control, propertyName);

            if ((memberInfo.PropertyInfo != null) && (memberInfo.Instance != null))
            {
                object target = memberInfo.PropertyInfo.GetValue(memberInfo.Instance, null);
                target.GetType().InvokeMember("ClearDefaults", BindingFlags.InvokeMethod | BindingFlags.Public | BindingFlags.Instance | BindingFlags.IgnoreCase, null, target, new object[0], CultureInfo.InvariantCulture);
            }
        }