Esempio n. 1
0
 internal override void EmitSet(CodeGen g, Operand value, bool allowExplicitConversion)
 {
     if (IsReference)
     {
         g.EmitLdargHelper(index);
         g.EmitStindHelper(Type, value, allowExplicitConversion);
     }
     else
     {
         g.EmitGetHelper(value, Type, allowExplicitConversion);
         g.EmitStargHelper(index);
     }
 }
Esempio n. 2
0
        internal override void EmitSet(CodeGen g, Operand value, bool allowExplicitConversion)
        {
            if (!IsStatic)
            {
                if (g.Context.IsStatic || g.Context.OwnerType != owner.TypeBuilder)
                {
                    throw new InvalidOperationException(Properties.Messages.ErrInvalidFieldContext);
                }

                g.IL.Emit(OpCodes.Ldarg_0);
            }

            g.EmitGetHelper(value, type, allowExplicitConversion);
            g.IL.Emit(IsStatic ? OpCodes.Stsfld : OpCodes.Stfld, fb);
        }
Esempio n. 3
0
            internal override void EmitSet(CodeGen g, Operand value, bool allowExplicitConversion)
            {
                CheckScope(g);

                if (t == null)
                {
                    t = value.Type;
                }

                if (var == null)
                {
                    var = g.il.DeclareLocal(t);
                }

                g.EmitGetHelper(value, t, allowExplicitConversion);
                g.il.Emit(OpCodes.Stloc, var);
            }
Esempio n. 4
0
        internal override void EmitSet(CodeGen g, Operand value, bool allowExplicitConversion)
        {
            if (setter == null)
            {
                base.EmitSet(g, value, allowExplicitConversion);
            }

            if (indexParameters.Count != 0)
            {
                throw new InvalidOperationException(Properties.Messages.ErrMissingPropertyIndex);
            }

            if (!IsStatic && (g.Context.IsStatic || g.Context.OwnerType != owner.TypeBuilder))
            {
                throw new InvalidOperationException(Properties.Messages.ErrInvalidPropertyContext);
            }

            g.IL.Emit(OpCodes.Ldarg_0);
            g.EmitGetHelper(value, Type, allowExplicitConversion);
            g.EmitCallHelper(setter.GetMethodBuilder(), null);
        }