System.Runtime.Serialization.Formatters.Binary.ObjectMap.CreateObjectInfo C# (CSharp) Method

CreateObjectInfo() private method

private CreateObjectInfo ( SerializationInfo &si, Object &memberData ) : ReadObjectInfo
si System.Runtime.Serialization.SerializationInfo
memberData Object
return ReadObjectInfo
        internal ReadObjectInfo CreateObjectInfo(ref SerializationInfo si, ref Object[] memberData)
        {
            if (isInitObjectInfo)
            {
                isInitObjectInfo = false;
                objectInfo.InitDataStore(ref si, ref memberData);
                return objectInfo;
            }
            else
            {
                objectInfo.PrepareForReuse();
                objectInfo.InitDataStore(ref si, ref memberData);
                return objectInfo;
            }
        }

Usage Example

示例#1
0
        private void ReadObject()
        {
            if (_binaryObject == null)
            {
                _binaryObject = new BinaryObject();
            }
            _binaryObject.Read(this);

            ObjectMap objectMap = (ObjectMap)ObjectMapIdTable[_binaryObject._mapId];

            if (objectMap == null)
            {
                throw new SerializationException(SR.Format(SR.Serialization_Map, _binaryObject._mapId));
            }

            ObjectProgress op = GetOp();
            ParseRecord    pr = op._pr;

            _stack.Push(op);

            op._objectTypeEnum   = InternalObjectTypeE.Object;
            op._binaryTypeEnumA  = objectMap._binaryTypeEnumA;
            op._memberNames      = objectMap._memberNames;
            op._memberTypes      = objectMap._memberTypes;
            op._typeInformationA = objectMap._typeInformationA;
            op._memberLength     = op._binaryTypeEnumA.Length;
            ObjectProgress objectOp = (ObjectProgress)_stack.PeekPeek();

            if ((objectOp == null) || (objectOp._isInitial))
            {
                // Non-Nested Object
                op._name            = objectMap._objectName;
                pr._parseTypeEnum   = InternalParseTypeE.Object;
                op._memberValueEnum = InternalMemberValueE.Empty;
            }
            else
            {
                // Nested Object
                pr._parseTypeEnum   = InternalParseTypeE.Member;
                pr._memberValueEnum = InternalMemberValueE.Nested;
                op._memberValueEnum = InternalMemberValueE.Nested;

                switch (objectOp._objectTypeEnum)
                {
                case InternalObjectTypeE.Object:
                    pr._name           = objectOp._name;
                    pr._memberTypeEnum = InternalMemberTypeE.Field;
                    op._memberTypeEnum = InternalMemberTypeE.Field;
                    break;

                case InternalObjectTypeE.Array:
                    pr._memberTypeEnum = InternalMemberTypeE.Item;
                    op._memberTypeEnum = InternalMemberTypeE.Item;
                    break;

                default:
                    throw new SerializationException(SR.Format(SR.Serialization_Map, objectOp._objectTypeEnum.ToString()));
                }
            }

            pr._objectId   = _objectReader.GetId(_binaryObject._objectId);
            pr._objectInfo = objectMap.CreateObjectInfo(ref pr._si, ref pr._memberData);

            if (pr._objectId == _topId)
            {
                pr._objectPositionEnum = InternalObjectPositionE.Top;
            }

            pr._objectTypeEnum = InternalObjectTypeE.Object;
            pr._keyDt          = objectMap._objectName;
            pr._dtType         = objectMap._objectType;
            pr._dtTypeCode     = InternalPrimitiveTypeE.Invalid;
            _objectReader.Parse(pr);
        }
All Usage Examples Of System.Runtime.Serialization.Formatters.Binary.ObjectMap::CreateObjectInfo