System.Runtime.Serialization.Formatters.Soap.WriteObjectInfo.InitMemberInfo C# (CSharp) Method

InitMemberInfo() private method

private InitMemberInfo ( ) : void
return void
        private void InitMemberInfo()
        {
            InternalST.Soap( this,objectInfoId," ", objectType," InitMemberInfo Entry");

            cache = (SerObjectInfoCache)serObjectInfoInit.seenBeforeTable[objectType];
            if (cache == null)
            {
                InternalST.Soap( this,objectInfoId," ", objectType," InitMemberInfo new cache");
                cache = new SerObjectInfoCache();
                int count = 0;
                if (!objectType.IsByRef) // byref will only occur for MethodSignature
                {
                    cache.memberInfos = FormatterServices.GetSerializableMembers(objectType, context);
                    count = cache.memberInfos.Length;
                }
                cache.memberNames = new String[count];
                cache.memberTypes = new Type[count];
                cache.memberAttributeInfos = new SoapAttributeInfo[count];

                // Calculate new arrays
                for (int i=0; i<count; i++)
                {
                    cache.memberNames[i] = cache.memberInfos[i].Name;
                    cache.memberTypes[i] = GetMemberType(cache.memberInfos[i]);
                    cache.memberAttributeInfos[i] = Attr.GetMemberAttributeInfo(cache.memberInfos[i], cache.memberNames[i], cache.memberTypes[i]);
                    InternalST.Soap( this, objectInfoId," InitMemberInfo name ",cache.memberNames[i],", type ",cache.memberTypes[i],", memberInfoType ",cache.memberInfos[i].GetType());                   
                }
                cache.fullTypeName = objectType.FullName;
                cache.assemblyString = objectType.Module.Assembly.FullName;
                serObjectInfoInit.seenBeforeTable.Add(objectType, cache);
            }

            if (obj != null)
            {
                memberData = FormatterServices.GetObjectData(obj, cache.memberInfos);
                DumpMemberInfo();
            }

            isTyped = true;
            isNamed = true;
            InternalST.Soap( this,objectInfoId," ", objectType," InitMemberInfo Exit");                        
        }