/// <summary> /// Initialize the state without delayed initialization of the BinaryClassInfo. /// </summary> public BinaryConverter Initialize(Type type, BinarySerializerOptions options, bool supportContinuation) { _typeSeqList = new List <ushort>(); BinaryClassInfo binaryClassInfo = options.GetOrAddClass(type); TypeMap = options.TypeMap; AddTypeSeq(binaryClassInfo.TypeSeq); //PrimaryTypeSeq = binaryClassInfo.TypeSeq; Current.BinaryClassInfo = binaryClassInfo; Current.BinaryTypeInfo = TypeMap.GetTypeInfo(binaryClassInfo.TypeSeq); Current.DeclaredBinaryPropertyInfo = binaryClassInfo.PropertyInfoForClassInfo; if (options.ReferenceHandler != null) { ReferenceResolver = options.ReferenceHandler !.CreateResolver(writing: true); } else { ReferenceResolver = new ObjectReferenceResolver(); } SupportContinuation = supportContinuation; return(binaryClassInfo.PropertyInfoForClassInfo.ConverterBase); }
public BinaryConverter InitializeReEntry(Type type, BinarySerializerOptions options) { BinaryClassInfo classInfo = options.GetOrAddClass(type); // Set for exception handling calculation of BinaryPath. // BinaryPropertyNameAsString = propertyName; PolymorphicBinaryClassInfo = classInfo; PolymorphicBinaryTypeInfo = TypeMap.GetTypeInfo(classInfo.TypeSeq); return(classInfo.PropertyInfoForClassInfo.ConverterBase); }
public void Initialize(Type type, BinarySerializerOptions options, bool supportContinuation) { BinaryClassInfo binaryClassInfo = options.GetOrAddClass(type); Current.BinaryClassInfo = binaryClassInfo; // The initial BinaryPropertyInfo will be used to obtain the converter. Current.BinaryPropertyInfo = binaryClassInfo.PropertyInfoForClassInfo; Current.BinaryTypeInfo = TypeMap.GetTypeInfo(type); Current.TypeMap = TypeMap; if (options.ReferenceHandler != null) { ReferenceResolver = options.ReferenceHandler !.CreateResolver(writing: false); } else { ReferenceResolver = new ObjectReferenceResolver(); } SupportContinuation = supportContinuation; UseFastPath = !supportContinuation; }