public override void WriteJson(JsonWriter writer, EditableValue <T> editable, JsonSerializer serializer) { writer.WriteStartObject(); string state = editable.Match( update: _ => Constants.Editable_UpdateState, noAction: () => Constants.Editable_NoActionState); writer.WritePropertyName(Constants.StatePropertyName); writer.WriteValue(state); var(isUpdate, value) = editable.Match( update: e => (true, e), noAction: () => (false, default(T))); if (isUpdate) { writer.WritePropertyName(Constants.ValuePropertyName); serializer.Serialize(writer, value); } writer.WriteEndObject(); }
public static TResult ReduceMap <T, TResult>(this EditableValue <T> value, Func <T, TResult> map, TResult noActionValue = default(TResult)) => value.Match( update: map, noAction: () => noActionValue);
public static void Act <T>(this EditableValue <T> value, Action <T> update, Action noAction = null) => value.Match( update: update.ToVoidFunc(), noAction: noAction.ToVoidFuncOrEmpty());
public static TResult ReduceMap <T, TResult>(this EditableValue <T> value, Func <T, TResult> map, Func <TResult> noAction) => value.Match( update: map, noAction: noAction);
public static T ReduceOrDefault <T>(this EditableValue <T> value) => value.Match( update: Functions.Id, noAction: () => default(T));
public static T?ReduceOrNull <T>(this EditableValue <T> value, T?defaultValue) where T : struct => value.Match( update : Functions.NullableId, noAction : () => defaultValue);
public static T ReduceWith <T>(this EditableValue <T> value, Func <T> noAction) => value.Match( update: Functions.Id, noAction: noAction);
public static ClearableValue <T> AsClearable <T>(this EditableValue <T> value) => value.Match( update: ClearableValue <T> .Set, noAction: ClearableValue <T> .NoAction);
public static bool IsNoAction <T>(this EditableValue <T> value) => value.Match( update: _ => false, noAction: () => true);