internal ObjectMap(String objectName, String[] memberNames, BinaryTypeEnum[] binaryTypeEnumA, Object[] typeInformationA, int[] memberAssemIds, ObjectReader objectReader, Int32 objectId, BinaryAssemblyInfo assemblyInfo, SizedArray assemIdToAssemblyTable)
{
SerTrace.Log( this, "Constructor 2 objectName ",objectName);
this.objectName = objectName;
this.memberNames = memberNames;
this.binaryTypeEnumA = binaryTypeEnumA;
this.typeInformationA = typeInformationA;
this.objectReader = objectReader;
this.objectId = objectId;
this.assemblyInfo = assemblyInfo;
if (assemblyInfo == null)
throw new SerializationException(String.Format(CultureInfo.CurrentCulture, Environment.GetResourceString("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;
BinaryConverter.TypeFromInfo(binaryTypeEnumA[i], typeInformationA[i], objectReader, (BinaryAssemblyInfo)assemIdToAssemblyTable[memberAssemIds[i]],
out primitiveTypeEnum, out typeString, out type, out isVariant);
//if (type == null)
// throw new SerializationException(String.Format(Environment.GetResourceString("Serialization_TypeResolved"),objectName+" "+memberNames[i]+" "+typeInformationA[i]));
memberTypes[i] = type;
}
objectInfo = objectReader.CreateReadObjectInfo(objectType, memberNames, null);
if (!objectInfo.isSi)
objectInfo.GetMemberTypes(memberNames, objectInfo.objectType); // Check version match
}