internal override bool OnTryWrite(
            Utf8JsonWriter writer,
            T value,
            JsonSerializerOptions options,
            ref WriteStack state)
        {
            JsonTypeInfo jsonTypeInfo = state.Current.JsonTypeInfo;

            if (jsonTypeInfo.PropertyCacheArray == null)
            {
                jsonTypeInfo.InitializeSerializePropCache();
            }

            return(base.OnTryWrite(writer, value, options, ref state));
        }
Exemplo n.º 2
0
        internal override bool OnTryWrite(Utf8JsonWriter writer, T value, JsonSerializerOptions options, ref WriteStack state)
        {
            JsonTypeInfo jsonTypeInfo = state.Current.JsonTypeInfo;

            Debug.Assert(options == jsonTypeInfo.Options);

            if (!state.SupportContinuation &&
                jsonTypeInfo is JsonTypeInfo <T> info &&
                info.Serialize != null &&
                info.Options._context?.CanUseSerializationLogic == true)
            {
                info.Serialize(writer, value);
                return(true);
            }

            if (_converterStrategy == ConverterStrategy.Object && jsonTypeInfo.PropertyCacheArray == null)
            {
                jsonTypeInfo.InitializeSerializePropCache();
            }

            return(Converter.OnTryWrite(writer, value, options, ref state));
        }