public Field CreateField(long id, string name, FieldProperties properties) { var registered = fieldsByPropertyType.GetOrDefault(properties.GetType()); if (registered == null) { throw new InvalidOperationException($"The field property '{properties.GetType()}' is not supported."); } return(registered.CreateField(id, name, properties)); }
private T ValidateProperties(FieldProperties newProperties) { Guard.NotNull(newProperties, nameof(newProperties)); newProperties.Freeze(); var typedProperties = newProperties as T; if (typedProperties == null) { throw new ArgumentException($"Properties must be of type '{typeof(T)}", nameof(newProperties)); } newProperties.Validate(() => $"Cannot update field with id '{Id}', because the settings are invalid."); return(typedProperties); }
public Field CreateField(long id, string name, Partitioning partitioning, FieldProperties properties) { return(fieldFactory(id, name, partitioning, properties)); }
Field IRegisteredField.CreateField(long id, string name, FieldProperties properties) { return(fieldFactory(id, name, properties)); }
public override Field Update(FieldProperties newProperties) { var typedProperties = ValidateProperties(newProperties); return(Clone <Field <T> >(clone => clone.properties = typedProperties)); }
public abstract Field Update(FieldProperties newProperties);
public Schema UpdateField(long fieldId, FieldProperties newProperties) { return(UpdateField(fieldId, field => field.Update(newProperties))); }