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

Ldloca() private method

private Ldloca ( LocalBuilder localBuilder ) : void
localBuilder System.Reflection.Emit.LocalBuilder
return void
        internal void Ldloca(LocalBuilder localBuilder)
        {
            if (_codeGenTrace != CodeGenTrace.None)
                EmitSourceInstruction("Ldloca " + _localNames[localBuilder]);
            _ilGen.Emit(OpCodes.Ldloca, localBuilder);
            EmitStackTop(localBuilder.LocalType);
        }

Usage Example

コード例 #1
0
            private void CreateObject(ClassDataContract classContract)
            {
                Type type = _objectType = classContract.UnderlyingType;

                if (type.IsValueType && !classContract.IsNonAttributedType)
                {
                    type = Globals.TypeOfValueType;
                }

                _objectLocal = _ilg.DeclareLocal(type, "objectDeserialized");

                if (classContract.UnderlyingType == Globals.TypeOfDBNull)
                {
                    _ilg.LoadMember(Globals.TypeOfDBNull.GetField("Value") !);
                    _ilg.Stloc(_objectLocal);
                }
                else if (classContract.IsNonAttributedType)
                {
                    if (type.IsValueType)
                    {
                        _ilg.Ldloca(_objectLocal);
                        _ilg.InitObj(type);
                    }
                    else
                    {
                        _ilg.New(classContract.GetNonAttributedTypeConstructor() !);
                        _ilg.Stloc(_objectLocal);
                    }
                }
                else
                {
                    _ilg.Call(null, XmlFormatGeneratorStatics.GetUninitializedObjectMethod, DataContract.GetIdForInitialization(classContract));
                    _ilg.ConvertValue(Globals.TypeOfObject, type);
                    _ilg.Stloc(_objectLocal);
                }
            }
All Usage Examples Of System.Runtime.Serialization.CodeGenerator::Ldloca