コード例 #1
0
        internal static void WriteLateBoundObject(TextWriter writer, object value)
        {
            if (value == null)
            {
                writer.Write(JsonUtils.Null);
                return;
            }

            try
            {
                if (!JsState.Traverse(value))
                {
                    return;
                }

                var type    = value.GetType();
                var writeFn = type == typeof(object)
                    ? WriteType <object, JsonTypeSerializer> .WriteObjectType
                    : GetWriteFn(type);

                var prevState = JsState.IsWritingDynamic;
                JsState.IsWritingDynamic = true;
                writeFn(writer, value);
                JsState.IsWritingDynamic = prevState;
            }
            finally
            {
                JsState.UnTraverse();
            }
        }
コード例 #2
0
        public static void Reset()
        {
            foreach (var rawSerializeType in HasSerializeFn.ToArray())
            {
                Reset(rawSerializeType);
            }
            foreach (var rawSerializeType in HasIncludeDefaultValue.ToArray())
            {
                Reset(rawSerializeType);
            }
            foreach (var uniqueType in __uniqueTypes.ToArray())
            {
                Reset(uniqueType);
            }

            sModelFactory = ReflectionExtensions.GetConstructorMethodToCache;
            sTryToParsePrimitiveTypeValues          = null;
            sTryToParseNumericType                  = null;
            sConvertObjectTypesIntoStringDictionary = null;
            sIncludeNullValues            = null;
            sExcludeTypeInfo              = null;
            sEmitCamelCaseNames           = null;
            sEmitLowercaseUnderscoreNames = null;
            sDateHandler                 = null;
            sTimeSpanHandler             = null;
            sPreferInterfaces            = null;
            sThrowOnDeserializationError = null;
            sTypeAttr              = null;
            sJsonTypeAttrInObject  = null;
            sJsvTypeAttrInObject   = null;
            sTypeWriter            = null;
            sTypeFinder            = null;
            sTreatEnumAsInteger    = null;
            sAlwaysUseUtc          = null;
            sAssumeUtc             = null;
            sAppendUtcOffset       = null;
            sEscapeUnicode         = null;
            sIncludePublicFields   = null;
            sReuseStringBuffer     = null;
            HasSerializeFn         = new HashSet <Type>();
            HasIncludeDefaultValue = new HashSet <Type>();
            TreatValueAsRefTypes   = new HashSet <Type> {
                typeof(KeyValuePair <,>)
            };
            sPropertyConvention        = null;
            sExcludePropertyReferences = null;
            sExcludeTypes = new HashSet <Type> {
                typeof(Stream)
            };
            __uniqueTypes = new HashSet <Type>();
            sMaxDepth     = 50;
            sParsePrimitiveIntegerTypes       = null;
            sParsePrimitiveFloatingPointTypes = null;
            PlatformExtensions.ClearRuntimeAttributes();
            ReflectionExtensions.Reset();
            JsState.Reset();
        }
コード例 #3
0
 public static void WriteObject(TextWriter writer, object value)
 {
     if (writer == null)
     {
         return;
     }
     using (JsState.OpenWriteObjectScope <T>())
     {
         CacheFn(writer, value);
     }
 }