handle optional props

This commit is contained in:
Tian Liao 2024-11-06 12:25:48 +08:00
commit c8cfe10ed0

View file

@ -160,10 +160,10 @@ namespace CalculatorApp.JsonUtils
public CalcManagerSnapshot Value; public CalcManagerSnapshot Value;
[JsonPropertyName("h")] [JsonPropertyName("h")]
public IEnumerable<CalcManagerHistoryItemAlias> HistoryItems public IEnumerable<CalcManagerHistoryItemAlias> HistoryItems // optional
{ {
get => Value.HistoryItems.Select(x => new CalcManagerHistoryItemAlias { Value = x }); get => Value?.HistoryItems.Select(x => new CalcManagerHistoryItemAlias { Value = x });
set => Value.HistoryItems = value.Select(x => new CalcManagerHistoryItem set => Value.HistoryItems = value?.Select(x => new CalcManagerHistoryItem
{ {
Tokens = x.Tokens.Select(Helpers.MapHistoryToken).ToList(), Tokens = x.Tokens.Select(Helpers.MapHistoryToken).ToList(),
Commands = x.Commands.Select(Helpers.MapCommandAlias).ToList(), Commands = x.Commands.Select(Helpers.MapCommandAlias).ToList(),
@ -238,10 +238,10 @@ namespace CalculatorApp.JsonUtils
set => Value.PrimaryDisplay = value.Value; set => Value.PrimaryDisplay = value.Value;
} }
[JsonPropertyName("e")] [JsonPropertyName("e")]
public ExpressionDisplaySnapshotAlias ExpressionDisplay public ExpressionDisplaySnapshotAlias ExpressionDisplay // optional
{ {
get => new ExpressionDisplaySnapshotAlias(Value.ExpressionDisplay); get => Value != null ? new ExpressionDisplaySnapshotAlias(Value.ExpressionDisplay) : null;
set => Value.ExpressionDisplay = value.Value; set => Value.ExpressionDisplay = value?.Value;
} }
[JsonPropertyName("c")] [JsonPropertyName("c")]
public IEnumerable<ICalcManagerIExprCommandAlias> Commands public IEnumerable<ICalcManagerIExprCommandAlias> Commands
@ -262,10 +262,10 @@ namespace CalculatorApp.JsonUtils
[JsonPropertyName("m")] [JsonPropertyName("m")]
public int Mode { get => Value.Mode; set => Value.Mode = value; } public int Mode { get => Value.Mode; set => Value.Mode = value; }
[JsonPropertyName("s")] [JsonPropertyName("s")]
public StandardCalculatorSnapshotAlias StandardCalculatorSnapshot public StandardCalculatorSnapshotAlias StandardCalculatorSnapshot // optional
{ {
get => new StandardCalculatorSnapshotAlias(Value.StandardCalculator); get => Value != null ? new StandardCalculatorSnapshotAlias(Value.StandardCalculator) : null;
set => Value.StandardCalculator = value.Value; set => Value.StandardCalculator = value?.Value;
} }
public ApplicationSnapshotAlias() => Value = new ApplicationSnapshot(); public ApplicationSnapshotAlias() => Value = new ApplicationSnapshot();