Exemplo n.º 1
0
        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();
        }
Exemplo n.º 2
0
 public static TResult ReduceMap <T, TResult>(this EditableValue <T> value, Func <T, TResult> map, TResult noActionValue = default(TResult)) =>
 value.Match(
     update: map,
     noAction: () => noActionValue);
Exemplo n.º 3
0
 public static void Act <T>(this EditableValue <T> value, Action <T> update, Action noAction = null) =>
 value.Match(
     update: update.ToVoidFunc(),
     noAction: noAction.ToVoidFuncOrEmpty());
Exemplo n.º 4
0
 public static TResult ReduceMap <T, TResult>(this EditableValue <T> value, Func <T, TResult> map, Func <TResult> noAction) =>
 value.Match(
     update: map,
     noAction: noAction);
Exemplo n.º 5
0
 public static T ReduceOrDefault <T>(this EditableValue <T> value) =>
 value.Match(
     update: Functions.Id,
     noAction: () => default(T));
Exemplo n.º 6
0
 public static T?ReduceOrNull <T>(this EditableValue <T> value, T?defaultValue) where T : struct =>
 value.Match(
     update : Functions.NullableId,
     noAction : () => defaultValue);
Exemplo n.º 7
0
 public static T ReduceWith <T>(this EditableValue <T> value, Func <T> noAction) =>
 value.Match(
     update: Functions.Id,
     noAction: noAction);
Exemplo n.º 8
0
 public static ClearableValue <T> AsClearable <T>(this EditableValue <T> value) =>
 value.Match(
     update: ClearableValue <T> .Set,
     noAction: ClearableValue <T> .NoAction);
Exemplo n.º 9
0
 public static bool IsNoAction <T>(this EditableValue <T> value) =>
 value.Match(
     update: _ => false,
     noAction: () => true);