System.Data.ConstraintConverter.ConvertTo C# (CSharp) Method

ConvertTo() public method

Converts the given object to another type. The most common types to convert are to and from a string object. The default implementation will make a call to ToString on the object if the object is valid and if the destination type is string. If this cannot convert to the desitnation type, this will throw a NotSupportedException.
public ConvertTo ( ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType ) : object
context ITypeDescriptorContext
culture CultureInfo
value object
destinationType Type
return object
        public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType)
        {
            if (destinationType == null)
            {
                throw new ArgumentNullException(nameof(destinationType));
            }

            if (destinationType == typeof(InstanceDescriptor) && value is Constraint)
            {
                if (value is UniqueConstraint)
                {
                    UniqueConstraint constr = (UniqueConstraint)value;
                    Reflection.ConstructorInfo ctor = typeof(UniqueConstraint).GetConstructor(new Type[] { typeof(string), typeof(string[]), typeof(bool) });
                    if (ctor != null)
                    {
                        return new InstanceDescriptor(ctor, new object[] { constr.ConstraintName, constr.ColumnNames, constr.IsPrimaryKey });
                    }
                }
                else
                {
                    ForeignKeyConstraint constr = (ForeignKeyConstraint)value;
                    System.Reflection.ConstructorInfo ctor =
                        typeof(ForeignKeyConstraint).GetConstructor(new Type[] { typeof(string), typeof(string), typeof(string[]),
                            typeof(string[]), typeof(AcceptRejectRule), typeof(Rule), typeof(Rule) });
                    if (ctor != null)
                    {
                        return new InstanceDescriptor(ctor, new object[] { constr.ConstraintName, constr.ParentKey.Table.TableName, constr.ParentColumnNames,
                            constr.ChildColumnNames, constr.AcceptRejectRule, constr.DeleteRule, constr.UpdateRule });
                    }
                }
            }

            return base.ConvertTo(context, culture, value, destinationType);
        }
    }