private SizedArray(SizedArray sizedArray) { this.objects = new object[sizedArray.objects.Length]; sizedArray.objects.CopyTo((Array)this.objects, 0); this.negObjects = new object[sizedArray.negObjects.Length]; sizedArray.negObjects.CopyTo((Array)this.negObjects, 0); }
internal ObjectMap(string objectName, string[] memberNames, BinaryTypeEnum[] binaryTypeEnumA, object[] typeInformationA, int[] memberAssemIds, ObjectReader objectReader, int objectId, BinaryAssemblyInfo assemblyInfo, SizedArray assemIdToAssemblyTable) { _objectName = objectName; _memberNames = memberNames; _binaryTypeEnumA = binaryTypeEnumA; _typeInformationA = typeInformationA; _objectReader = objectReader; _objectId = objectId; _assemblyInfo = assemblyInfo; if (assemblyInfo == null) { throw new SerializationException(SR.Format(SR.Serialization_Assembly, objectName)); } _objectType = objectReader.GetType(assemblyInfo, objectName); _memberTypes = new Type[memberNames.Length]; for (int i = 0; i < memberNames.Length; i++) { InternalPrimitiveTypeE primitiveTypeEnum; string typeString; Type type; bool isVariant; BinaryTypeConverter.TypeFromInfo( binaryTypeEnumA[i], typeInformationA[i], objectReader, (BinaryAssemblyInfo)assemIdToAssemblyTable[memberAssemIds[i]], out primitiveTypeEnum, out typeString, out type, out isVariant); _memberTypes[i] = type; } _objectInfo = objectReader.CreateReadObjectInfo(_objectType, memberNames, null); if (!_objectInfo._isSi) { _objectInfo.GetMemberTypes(memberNames, _objectInfo._objectType); // Check version match } }
// Member type information internal static ObjectMap Create( string name, string[] memberNames, BinaryTypeEnum[] binaryTypeEnumA, object[] typeInformationA, int[] memberAssemIds, ObjectReader objectReader, int objectId, BinaryAssemblyInfo assemblyInfo, SizedArray assemIdToAssemblyTable) => new ObjectMap(name, memberNames, binaryTypeEnumA, typeInformationA, memberAssemIds, objectReader, objectId, assemblyInfo, assemIdToAssemblyTable);