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); }