public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { var jsonObject = JObject.Load(reader); var field = default(IIntegrationSetupField); var fieldToken = jsonObject["FieldType"]; if (fieldToken is null) { fieldToken = jsonObject["fieldType"]; } switch (fieldToken.ToString()) { case nameof(CheckboxField): field = new CheckboxField(); break; case nameof(ShortTextField): field = new ShortTextField(); break; case nameof(LongTextField): field = new LongTextField(); break; case nameof(SsmlField): field = new SsmlField(); break; case nameof(SelectField): field = new SelectField(); break; case nameof(SwitchField): field = new SwitchField(); break; } serializer.Populate(jsonObject.CreateReader(), field); return(field); }
internal static BaseField CreateField(FieldType type) { BaseField field = null; switch (type) { case FieldType.ObjectKey: field = new ObjectKeyField(); break; case FieldType.BigInt: field = new BigIntField(); break; case FieldType.Bool: field = new BoolField(); break; case FieldType.Date: field = new DateField(); break; case FieldType.DateTime: field = new DateTimeField(); break; case FieldType.Decimal: field = new DecimalField(); break; case FieldType.Image: field = new ImageField(); break; case FieldType.Integer: field = new IntegerField(); break; case FieldType.LongText: field = new LongTextField(); break; case FieldType.Password: field = new PasswordField(); break; case FieldType.MonataryAmount: field = new DecimalField(); break; case FieldType.Html: field = new HtmlField(); break; case FieldType.Xml: field = new XmlField(); break; case FieldType.Json: field = new JsonField(); break; case FieldType.Email: field = new EmailField(); break; case FieldType.Phone: field = new PhoneField(); break; case FieldType.ObjectLink: field = new ObjectLinkField(); break; case FieldType.MultiObjectLink: field = new MultiObjectLinkField(); break; case FieldType.Select: field = new SelectField(); break; case FieldType.MultiSelect: field = new MultiSelectField(); break; case FieldType.FilterField: field = new FilterField(); break; case FieldType.OneToMany: field = new OneToManyField(); break; default: field = new StringField(); break; } return(field); }