/// <summary>
        /// Converts a value from a string to a Field.
        /// </summary>
        /// <param name="context">The context.</param>
        /// <param name="culture">The culture.</param>
        /// <param name="value">The value to convert.</param>
        /// <returns>A Field.</returns>
        public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value)
        {
            if (value != default(object))
            {
                IDataDestinationFieldsProvider provider = (IDataDestinationFieldsProvider)context.Instance;
                List <Field> fields = provider.GetDataDestinationFields();
                return(fields.FirstOrDefault(field => field.DisplayName == (string)value));
            }

            return(base.ConvertFrom(context, culture, value));
        }
        public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value)
        {
            if (!string.IsNullOrEmpty((string)value))
            {
                IDataDestinationFieldsProvider provider = (IDataDestinationFieldsProvider)context.Instance;
                List <Field> fields      = provider.GetDataDestinationFields();
                string       logicalName = Regex.Match((string)value, CoreUtility.FieldMatchPattern).Groups[1].Value;
                return(fields.FirstOrDefault(field => ((Dynamics365Field)field).LogicalName == logicalName));
            }

            return(null);
        }
        public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType)
        {
            if (value != default(object))
            {
                Dynamics365Field field = (Dynamics365Field)value;

                if (context?.Instance != default(object))
                {
                    IDataDestinationFieldsProvider provider = (IDataDestinationFieldsProvider)context.Instance;
                    List <Field>     fields       = provider.GetDataDestinationFields();
                    Dynamics365Field renamedField = (Dynamics365Field)fields.FirstOrDefault(f => ((Dynamics365Field)f).LogicalName == field.LogicalName);

                    if (renamedField.DisplayName != field.DisplayName)
                    {
                        field.DisplayName = renamedField.DisplayName;
                    }
                }

                return(string.Format("{0} ({1})", field.DisplayName, field.LogicalName));
            }

            return(null);
        }
        /// <summary>
        /// Gets a list of DataDestination Field objects.
        /// </summary>
        /// <param name="context">The context.</param>
        /// <returns>The list of DataDestination Field items.</returns>
        public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context)
        {
            IDataDestinationFieldsProvider provider = (IDataDestinationFieldsProvider)context.Instance;

            return(new StandardValuesCollection(provider.GetDataDestinationFields()));
        }