private void Write(WriteObjectInfo objectInfo, NameInfo memberNameInfo, NameInfo typeNameInfo, string[] memberNames, Type[] memberTypes, object[] memberData, WriteObjectInfo[] memberObjectInfos)
{
int length = memberNames.Length;
NameInfo nameInfo1 = (NameInfo)null;
if (memberNameInfo != null)
{
memberNameInfo.NIobjectId = objectInfo.objectId;
this.serWriter.WriteObject(memberNameInfo, typeNameInfo, length, memberNames, memberTypes, memberObjectInfos);
}
else if (objectInfo.objectId == this.topId && this.topName != null)
{
nameInfo1 = this.MemberToNameInfo(this.topName);
nameInfo1.NIobjectId = objectInfo.objectId;
this.serWriter.WriteObject(nameInfo1, typeNameInfo, length, memberNames, memberTypes, memberObjectInfos);
}
else if (objectInfo.objectType != Converter.typeofString)
{
typeNameInfo.NIobjectId = objectInfo.objectId;
this.serWriter.WriteObject(typeNameInfo, (NameInfo)null, length, memberNames, memberTypes, memberObjectInfos);
}
if (memberNameInfo.NIisParentTypeOnObject)
{
memberNameInfo.NItransmitTypeOnObject = true;
memberNameInfo.NIisParentTypeOnObject = false;
}
else
{
memberNameInfo.NItransmitTypeOnObject = false;
}
for (int index = 0; index < length; ++index)
{
this.WriteMemberSetup(objectInfo, memberNameInfo, typeNameInfo, memberNames[index], memberTypes[index], memberData[index], memberObjectInfos[index]);
}
if (memberNameInfo != null)
{
memberNameInfo.NIobjectId = objectInfo.objectId;
this.serWriter.WriteObjectEnd(memberNameInfo, typeNameInfo);
}
else if (objectInfo.objectId == this.topId && this.topName != null)
{
this.serWriter.WriteObjectEnd(nameInfo1, typeNameInfo);
this.PutNameInfo(nameInfo1);
}
else
{
if (objectInfo.objectType == Converter.typeofString)
{
return;
}
__BinaryWriter binaryWriter = this.serWriter;
NameInfo nameInfo2 = typeNameInfo;
binaryWriter.WriteObjectEnd(nameInfo2, nameInfo2);
}
}