コード例 #1
0
        public static void SerializeToStream <T>(T value, Stream stream)
        {
            if (value == null)
            {
                return;
            }
            if (typeof(T) == typeof(object))
            {
                if (typeof(T).IsAbstract() || typeof(T).IsInterface())
                {
                    JsState.IsWritingDynamic = true;
                }
                SerializeToStream(value, value.GetType(), stream);
                if (typeof(T).IsAbstract() || typeof(T).IsInterface())
                {
                    JsState.IsWritingDynamic = false;
                }
                return;
            }

            var writer = new StreamWriter(stream, UTF8EncodingWithoutBom);

            try
            {
                SerializationVisitorTracker.TrackSerialization(writer);
                JsvWriter <T> .WriteObject(writer, value);
            }
            finally
            {
                SerializationVisitorTracker.UnTrackSerialization(writer);
            }
            writer.Flush();
        }
コード例 #2
0
        public static void SerializeToWriter <T>(T value, TextWriter writer)
        {
            if (value == null)
            {
                return;
            }
            if (typeof(T) == typeof(string))
            {
                writer.Write(value);
                return;
            }
            if (typeof(T) == typeof(object))
            {
                if (typeof(T).IsAbstract() || typeof(T).IsInterface())
                {
                    JsState.IsWritingDynamic = true;
                }
                SerializeToWriter(value, value.GetType(), writer);
                if (typeof(T).IsAbstract() || typeof(T).IsInterface())
                {
                    JsState.IsWritingDynamic = false;
                }
                return;
            }

            try
            {
                SerializationVisitorTracker.TrackSerialization(writer);
                JsvWriter <T> .WriteObject(writer, value);
            }
            finally
            {
                SerializationVisitorTracker.UnTrackSerialization(writer);
            }
        }
コード例 #3
0
        public static string SerializeToString(object value, Type type)
        {
            if (value == null)
            {
                return(null);
            }
            if (type == typeof(string))
            {
                return(value as string);
            }

            var sb = new StringBuilder();

            using (var writer = new StringWriter(sb, CultureInfo.InvariantCulture))
            {
                try
                {
                    SerializationVisitorTracker.TrackSerialization(writer);
                    JsvWriter.GetWriteFn(type)(writer, value);
                }
                finally
                {
                    SerializationVisitorTracker.UnTrackSerialization(writer);
                }
            }
            return(sb.ToString());
        }
コード例 #4
0
        public static void SerializeToStream(object value, Type type, Stream stream)
        {
            var writer = new StreamWriter(stream, UTF8EncodingWithoutBom);

            try
            {
                SerializationVisitorTracker.TrackSerialization(writer);
                JsvWriter.GetWriteFn(type)(writer, value);
            }
            finally
            {
                SerializationVisitorTracker.UnTrackSerialization(writer);
            }
            writer.Flush();
        }
コード例 #5
0
        public static string SerializeToString <T>(T value)
        {
            if (value == null)
            {
                return(null);
            }
            if (typeof(T) == typeof(string))
            {
                return(value as string);
            }
            if (typeof(T) == typeof(object) || typeof(T).IsAbstract() || typeof(T).IsInterface())
            {
                if (typeof(T).IsAbstract() || typeof(T).IsInterface())
                {
                    JsState.IsWritingDynamic = true;
                }
                var result = SerializeToString(value, value.GetType());
                if (typeof(T).IsAbstract() || typeof(T).IsInterface())
                {
                    JsState.IsWritingDynamic = false;
                }
                return(result);
            }

            var sb = new StringBuilder();

            using (var writer = new StringWriter(sb, CultureInfo.InvariantCulture))
            {
                try
                {
                    SerializationVisitorTracker.TrackSerialization(writer);
                    JsvWriter <T> .WriteObject(writer, value);
                }
                finally
                {
                    SerializationVisitorTracker.UnTrackSerialization(writer);
                }
            }
            return(sb.ToString());
        }
コード例 #6
0
        public static void SerializeToWriter(object value, Type type, TextWriter writer)
        {
            if (value == null)
            {
                return;
            }
            if (type == typeof(string))
            {
                writer.Write(value);
                return;
            }

            try
            {
                SerializationVisitorTracker.TrackSerialization(writer);
                JsvWriter.GetWriteFn(type)(writer, value);
            }
            finally
            {
                SerializationVisitorTracker.UnTrackSerialization(writer);
            }
        }