|
|
|
|
@ -8,6 +8,10 @@ namespace Volo.Abp.FeatureManagement.JsonConverters;
|
|
|
|
|
|
|
|
|
|
public class StringValueTypeJsonConverter : JsonConverter<IStringValueType>
|
|
|
|
|
{
|
|
|
|
|
private JsonSerializerOptions _readJsonSerializerOptions;
|
|
|
|
|
|
|
|
|
|
private JsonSerializerOptions _writeJsonSerializerOptions;
|
|
|
|
|
|
|
|
|
|
public override IStringValueType Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
|
|
|
|
|
{
|
|
|
|
|
var rootElement = JsonDocument.ParseValue(ref reader).RootElement;
|
|
|
|
|
@ -17,14 +21,13 @@ public class StringValueTypeJsonConverter : JsonConverter<IStringValueType>
|
|
|
|
|
{
|
|
|
|
|
var name = nameJsonProperty.Value.GetString();
|
|
|
|
|
|
|
|
|
|
var newOptions = JsonSerializerOptionsHelper.Create(options, this, new ValueValidatorJsonConverter(),
|
|
|
|
|
new SelectionStringValueItemSourceJsonConverter());
|
|
|
|
|
_readJsonSerializerOptions ??= JsonSerializerOptionsHelper.Create(options, this, new ValueValidatorJsonConverter(), new SelectionStringValueItemSourceJsonConverter());
|
|
|
|
|
|
|
|
|
|
return name switch
|
|
|
|
|
{
|
|
|
|
|
"SelectionStringValueType" => rootElement.Deserialize<SelectionStringValueType>(newOptions),
|
|
|
|
|
"FreeTextStringValueType" => rootElement.Deserialize<FreeTextStringValueType>(newOptions),
|
|
|
|
|
"ToggleStringValueType" => rootElement.Deserialize<ToggleStringValueType>(newOptions),
|
|
|
|
|
"SelectionStringValueType" => rootElement.Deserialize<SelectionStringValueType>(_readJsonSerializerOptions),
|
|
|
|
|
"FreeTextStringValueType" => rootElement.Deserialize<FreeTextStringValueType>(_readJsonSerializerOptions),
|
|
|
|
|
"ToggleStringValueType" => rootElement.Deserialize<ToggleStringValueType>(_readJsonSerializerOptions),
|
|
|
|
|
_ => throw new ArgumentException($"{nameof(IStringValueType)} named {name} was not found!")
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
@ -34,7 +37,7 @@ public class StringValueTypeJsonConverter : JsonConverter<IStringValueType>
|
|
|
|
|
|
|
|
|
|
public override void Write(Utf8JsonWriter writer, IStringValueType value, JsonSerializerOptions options)
|
|
|
|
|
{
|
|
|
|
|
var newOptions = JsonSerializerOptionsHelper.Create(options, this);
|
|
|
|
|
JsonSerializer.Serialize(writer, value, value.GetType(), newOptions);
|
|
|
|
|
_writeJsonSerializerOptions ??= JsonSerializerOptionsHelper.Create(options, this);
|
|
|
|
|
JsonSerializer.Serialize(writer, value, value.GetType(), _writeJsonSerializerOptions);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|