System.Runtime.Serialization.CodeGenerator.Pop C# (CSharp) Method

Pop() private method

private Pop ( ) : void
return void
        internal void Pop()
        {
            if (_codeGenTrace != CodeGenTrace.None)
                EmitSourceInstruction("Pop");
            _ilGen.Emit(OpCodes.Pop);
        }

Usage Example

コード例 #1
0
            private void StoreCollectionValue(LocalBuilder collection, LocalBuilder value, CollectionDataContract collectionContract)
            {
                if (collectionContract.Kind == CollectionKind.GenericDictionary || collectionContract.Kind == CollectionKind.Dictionary)
                {
                    ClassDataContract keyValuePairContract = DataContract.GetDataContract(value.LocalType) as ClassDataContract;
                    if (keyValuePairContract == null)
                    {
                        DiagnosticUtility.DebugAssert("Failed to create contract for KeyValuePair type");
                    }
                    DataMember   keyMember   = keyValuePairContract.Members[0];
                    DataMember   valueMember = keyValuePairContract.Members[1];
                    LocalBuilder pairKey     = _ilg.DeclareLocal(keyMember.MemberType, keyMember.Name);
                    LocalBuilder pairValue   = _ilg.DeclareLocal(valueMember.MemberType, valueMember.Name);
                    _ilg.LoadAddress(value);
                    _ilg.LoadMember(keyMember.MemberInfo);
                    _ilg.Stloc(pairKey);
                    _ilg.LoadAddress(value);
                    _ilg.LoadMember(valueMember.MemberInfo);
                    _ilg.Stloc(pairValue);

                    _ilg.Call(collection, collectionContract.AddMethod, pairKey, pairValue);
                    if (collectionContract.AddMethod.ReturnType != Globals.TypeOfVoid)
                    {
                        _ilg.Pop();
                    }
                }
                else
                {
                    _ilg.Call(collection, collectionContract.AddMethod, value);
                    if (collectionContract.AddMethod.ReturnType != Globals.TypeOfVoid)
                    {
                        _ilg.Pop();
                    }
                }
            }
All Usage Examples Of System.Runtime.Serialization.CodeGenerator::Pop