Show / Hide Table of Contents

Class SlimSerializer

Implements Slim serialization algorithm that relies on an injectable SlimFormat-derivative (through .ctor) paremeter. This class was designed for highly-efficient serialization of types without versioning. SlimSerializer supports a concept of "known types" that save space by not emitting their names into stream. Performance note: This serializer yields on average 1/4 serialization and 1/2 deserialization times while compared to BinaryFormatter. Serialization of Record-instances usually takes 1/6 of BinaryFormatter time. Format takes 1/10 space for records and 1/2 for general object graphs. Such performance is achieved because of dynamic compilation of type-specific serialization/deserialization methods. This type is thread-safe for serializations/deserializations when TypeMode is set to "PerCall"

Inheritance
System.Object
SlimSerializer
Implements
ISlimSerializer
ISerializer
Inherited Members
System.Object.Equals(System.Object)
System.Object.Equals(System.Object, System.Object)
System.Object.GetHashCode()
System.Object.GetType()
System.Object.MemberwiseClone()
System.Object.ReferenceEquals(System.Object, System.Object)
System.Object.ToString()
Namespace: NFX.Serialization.Slim
Assembly: NFX.dll
Syntax
[SlimSerializationProhibited]
public class SlimSerializer : ISlimSerializer, ISerializer

Constructors

SlimSerializer()

Declaration
public SlimSerializer()

SlimSerializer(SlimFormat)

Declaration
public SlimSerializer(SlimFormat format)
Parameters
Type Name Description
SlimFormat format

SlimSerializer(SlimFormat, IEnumerable<Type>[])

Declaration
public SlimSerializer(SlimFormat format, params IEnumerable<Type>[] globalTypes)
Parameters
Type Name Description
SlimFormat format
System.Collections.Generic.IEnumerable<System.Type>[] globalTypes

SlimSerializer(IEnumerable<Type>[])

Declaration
public SlimSerializer(params IEnumerable<Type>[] globalTypes)
Parameters
Type Name Description
System.Collections.Generic.IEnumerable<System.Type>[] globalTypes

Fields

HEADER

Declaration
public const ushort HEADER = 51966
Field Value
Type Description
System.UInt16

Owner

Associates arbitrary owner object with this instance. Slim serializer does not use this field internally for any purpose

Declaration
public object Owner
Field Value
Type Description
System.Object

Properties

BatchTypeRegistry

ADVANCED FEATURE! Developers do not use. Returns type registry used in batch. This call is only valid in TypeMode = "Batch" and is inherently not thread-safe. Be careful not to mutate the returned object

Declaration
public TypeRegistry BatchTypeRegistry { get; }
Property Value
Type Description
TypeRegistry

BatchTypesAdded

Returns true if last call to Serialize or Deserialize in batch mode added more types to type registry. This call is only valid in TypeMode = "Batch" and is inherently not thread-safe

Declaration
public bool BatchTypesAdded { get; }
Property Value
Type Description
System.Boolean

Format

Declaration
public SlimFormat Format { get; }
Property Value
Type Description
SlimFormat

IsThreadSafe

Returns true when TypeMode is "PerCall"

Declaration
public bool IsThreadSafe { get; }
Property Value
Type Description
System.Boolean

TypeMode

Gets/sets how serializer handles type information between calls to Serialize/Deserialize. Setting this to "Batch" makes this serializer instance not thread-safe for calling Serialize/Deserialize. This property itself is not thread-safe, that is - it should be only set once by control/initiating thread

Declaration
public TypeRegistryMode TypeMode { get; set; }
Property Value
Type Description
TypeRegistryMode

Methods

Deserialize(Stream)

Declaration
public object Deserialize(Stream stream)
Parameters
Type Name Description
System.IO.Stream stream
Returns
Type Description
System.Object

ResetCallBatch()

Resets type registry to initial state (which is based on global types) for TypeMode = "Batch", otherwise does nothing. This method is not thread-safe

Declaration
public void ResetCallBatch()

Serialize(Stream, Object)

Declaration
public void Serialize(Stream stream, object root)
Parameters
Type Name Description
System.IO.Stream stream
System.Object root

Implements

ISlimSerializer
ISerializer

Extension Methods

MiscUtils.NonNull<T>(T, Func<Exception>, String)
ObjectValueConversion.AsString(Object, String, ConvertErrorHandling)
ObjectValueConversion.AsNonNullOrEmptyString(Object)
ObjectValueConversion.AsLaconicConfig(Object, ConfigSectionNode, String, ConvertErrorHandling)
ObjectValueConversion.AsJSONConfig(Object, ConfigSectionNode, String, ConvertErrorHandling)
ObjectValueConversion.AsXMLConfig(Object, ConfigSectionNode, ConvertErrorHandling)
ObjectValueConversion.AsChar(Object, Char, ConvertErrorHandling)
ObjectValueConversion.AsNullableChar(Object, Nullable<Char>, ConvertErrorHandling)
ObjectValueConversion.AsByte(Object, Byte, ConvertErrorHandling)
ObjectValueConversion.AsNullableByte(Object, Nullable<Byte>, ConvertErrorHandling)
ObjectValueConversion.AsSByte(Object, SByte, ConvertErrorHandling)
ObjectValueConversion.AsNullableSByte(Object, Nullable<SByte>, ConvertErrorHandling)
ObjectValueConversion.AsShort(Object, Int16, ConvertErrorHandling)
ObjectValueConversion.AsNullableShort(Object, Nullable<Int16>, ConvertErrorHandling)
ObjectValueConversion.AsUShort(Object, UInt16, ConvertErrorHandling)
ObjectValueConversion.AsNullableUShort(Object, Nullable<UInt16>, ConvertErrorHandling)
ObjectValueConversion.AsInt(Object, Int32, ConvertErrorHandling)
ObjectValueConversion.AsNullableInt(Object, Nullable<Int32>, ConvertErrorHandling)
ObjectValueConversion.AsUInt(Object, UInt32, ConvertErrorHandling)
ObjectValueConversion.AsNullableUInt(Object, Nullable<UInt32>, ConvertErrorHandling)
ObjectValueConversion.AsLong(Object, Int64, ConvertErrorHandling)
ObjectValueConversion.AsNullableLong(Object, Nullable<Int64>, ConvertErrorHandling)
ObjectValueConversion.AsULong(Object, UInt64, ConvertErrorHandling)
ObjectValueConversion.AsNullableULong(Object, Nullable<UInt64>, ConvertErrorHandling)
ObjectValueConversion.AsDouble(Object, Double, ConvertErrorHandling)
ObjectValueConversion.AsNullableDouble(Object, Nullable<Double>, ConvertErrorHandling)
ObjectValueConversion.AsFloat(Object, Single, ConvertErrorHandling)
ObjectValueConversion.AsNullableFloat(Object, Nullable<Single>, ConvertErrorHandling)
ObjectValueConversion.AsDecimal(Object, Decimal, ConvertErrorHandling)
ObjectValueConversion.AsNullableDecimal(Object, Nullable<Decimal>, ConvertErrorHandling)
ObjectValueConversion.AsBool(Object, Boolean, ConvertErrorHandling)
ObjectValueConversion.AsNullableBool(Object, Nullable<Boolean>, ConvertErrorHandling)
ObjectValueConversion.AsGUID(Object, Guid, ConvertErrorHandling)
ObjectValueConversion.AsNullableGUID(Object, Nullable<Guid>, ConvertErrorHandling)
ObjectValueConversion.AsDateTime(Object)
ObjectValueConversion.AsDateTime(Object, DateTime, ConvertErrorHandling)
ObjectValueConversion.AsNullableDateTime(Object, Nullable<DateTime>, ConvertErrorHandling)
ObjectValueConversion.AsGDID(Object)
ObjectValueConversion.AsGDID(Object, GDID, ConvertErrorHandling)
ObjectValueConversion.AsNullableGDID(Object, Nullable<GDID>, ConvertErrorHandling)
ObjectValueConversion.AsGDIDSymbol(Object)
ObjectValueConversion.AsGDIDSymbol(Object, GDIDSymbol, ConvertErrorHandling)
ObjectValueConversion.AsNullableGDIDSymbol(Object, Nullable<GDIDSymbol>, ConvertErrorHandling)
ObjectValueConversion.AsTimeSpan(Object)
ObjectValueConversion.AsTimeSpan(Object, TimeSpan, ConvertErrorHandling)
ObjectValueConversion.AsNullableTimeSpan(Object, Nullable<TimeSpan>, ConvertErrorHandling)
ObjectValueConversion.AsEnum<TEnum>(Object, TEnum, ConvertErrorHandling)
ObjectValueConversion.AsNullableEnum<TEnum>(Object, Nullable<TEnum>, ConvertErrorHandling)
ObjectValueConversion.AsUri(Object, Uri, ConvertErrorHandling)
JSONExtensions.ToJSON(Object, JSONWritingOptions)
JSONExtensions.ToJSON(Object, TextWriter, JSONWritingOptions)
JSONExtensions.ToJSON(Object, Stream, JSONWritingOptions, Encoding)
ErlObject.ToErlObject(Object)
ErlObject.ToErlObject(Object, ErlTypeOrder, Boolean)
Back to top Copyright © 2006-2018 Agnicore Inc
Generated by DocFX