System.ComponentModel.ReflectPropertyDescriptor.ExtenderShouldSerializeValue C# (CSharp) Method

ExtenderShouldSerializeValue() private method

private ExtenderShouldSerializeValue ( IExtenderProvider provider, object component ) : bool
provider IExtenderProvider
component object
return bool
        internal bool ExtenderShouldSerializeValue(IExtenderProvider provider, object component)
        {
            provider = (IExtenderProvider)GetInvocationTarget(_componentClass, provider);

            if (IsReadOnly)
            {
                if (ShouldSerializeMethodValue != null)
                {
                    try
                    {
                        return (bool)ShouldSerializeMethodValue.Invoke(provider, new object[] { component });
                    }
                    catch { }
                }
                return Attributes.Contains(DesignerSerializationVisibilityAttribute.Content);
            }
            else if (DefaultValue == s_noValue)
            {
                if (ShouldSerializeMethodValue != null)
                {
                    try
                    {
                        return (bool)ShouldSerializeMethodValue.Invoke(provider, new object[] { component });
                    }
                    catch { }
                }
                return true;
            }
            return !object.Equals(DefaultValue, ExtenderGetValue(provider, component));
        }

Usage Example

 /// <summary>
 ///     Determines if this property should be persisted.  A property is
 ///     to be persisted if it is marked as persistable through a
 ///     PersistableAttribute, and if the property contains something other
 ///     than the default value.  Note, however, that this method will
 ///     return true for design time properties as well, so callers
 ///     should also check to see if a property is design time only before
 ///     persisting to runtime storage.
 /// </summary>
 public override bool ShouldSerializeValue(object comp)
 {
     return(_extenderInfo.ExtenderShouldSerializeValue(_provider, comp));
 }