System.Runtime.Serialization.Json.JsonFormatReaderGenerator.CriticalHelper.ReadMembers C# (CSharp) Method

ReadMembers() private method

private ReadMembers ( ClassDataContract classContract, System.Runtime.Serialization.BitFlagsGenerator expectedElements, Label memberLabels, Label throwDuplicateMemberLabel, LocalBuilder memberIndexLocal ) : int
classContract ClassDataContract
expectedElements System.Runtime.Serialization.BitFlagsGenerator
memberLabels System.Reflection.Emit.Label
throwDuplicateMemberLabel System.Reflection.Emit.Label
memberIndexLocal System.Reflection.Emit.LocalBuilder
return int
            private int ReadMembers(ClassDataContract classContract, BitFlagsGenerator expectedElements,
                Label[] memberLabels, Label throwDuplicateMemberLabel, LocalBuilder memberIndexLocal)
            {
                int memberCount = (classContract.BaseContract == null) ? 0 :
                    ReadMembers(classContract.BaseContract, expectedElements, memberLabels, throwDuplicateMemberLabel, memberIndexLocal);

                for (int i = 0; i < classContract.Members.Count; i++, memberCount++)
                {
                    DataMember dataMember = classContract.Members[i];
                    Type memberType = dataMember.MemberType;
                    _ilg.Case(memberLabels[memberCount], dataMember.Name);
                    _ilg.Set(memberIndexLocal, memberCount);
                    expectedElements.Load(memberCount);
                    _ilg.Brfalse(throwDuplicateMemberLabel);
                    LocalBuilder value = null;
                    if (dataMember.IsGetOnlyCollection)
                    {
                        _ilg.LoadAddress(_objectLocal);
                        _ilg.LoadMember(dataMember.MemberInfo);
                        value = _ilg.DeclareLocal(memberType, dataMember.Name + "Value");
                        _ilg.Stloc(value);
                        _ilg.Call(_contextArg, XmlFormatGeneratorStatics.StoreCollectionMemberInfoMethod, value);
                        ReadValue(memberType, dataMember.Name);
                    }
                    else
                    {
                        value = ReadValue(memberType, dataMember.Name);
                        _ilg.LoadAddress(_objectLocal);
                        _ilg.ConvertAddress(_objectLocal.LocalType, _objectType);
                        _ilg.Ldloc(value);
                        _ilg.StoreMember(dataMember.MemberInfo);
                    }
                    ResetExpectedElements(expectedElements, memberCount);
                    _ilg.EndCase();
                }
                return memberCount;
            }

Same methods

JsonFormatReaderGenerator.CriticalHelper::ReadMembers ( ClassDataContract classContract, LocalBuilder extensionDataLocal ) : void