Exemple #1
0
        public override void GenerateMethod(PropertyInfo pi, MethodInfo mi, ILGenerator gen)
        {
            if (pi == null)
            {
                throw new ArgumentOutOfRangeException("pi", "This proxy can only handle properties");
            }

            FieldInfo field;

            if (!_fields.TryGetValue(pi.Name, out field))
            {
                field = _pcb.AddField(pi.Name.ToLowerInvariant(), pi.PropertyType);
                _fields.Add(pi.Name, field);
            }

            if (mi.ReturnType == typeof(void))
            {
                // Setter
                gen.Emit(OpCodes.Ldarg_0);
                gen.Emit(OpCodes.Ldarg_1);
                gen.Emit(OpCodes.Stfld, field);
                gen.Emit(OpCodes.Ret);
            }
            else
            {
                // Getter
                gen.Emit(OpCodes.Ldarg_0);
                gen.Emit(OpCodes.Ldfld, field);
                gen.Emit(OpCodes.Ret);
            }
        }
 public override void Generate(IProxyCodeBuilder pcb)
 {
     _methodIndexField = pcb.AddField("_methodIndex", typeof(int));
     base.Generate(pcb);
 }
 public override void Generate(IProxyCodeBuilder pcb)
 {
     _methodIndexField = pcb.AddField("_methodIndex", typeof(int));
     base.Generate(pcb);
 }