public EventExpr(EventSpec spec, Location loc) { this.spec = spec; this.loc = loc; }
public override bool Define () { if (!base.Define ()) return false; if (!MemberType.IsDelegate) { Report.Error (66, Location, "`{0}': event must be of a delegate type", GetSignatureForError ()); } if (!CheckBase ()) return false; // // Now define the accessors // var AddBuilder = Add.Define (Parent); if (AddBuilder == null) return false; var RemoveBuilder = remove.Define (Parent); if (RemoveBuilder == null) return false; EventBuilder = Parent.TypeBuilder.DefineEvent (GetFullName (MemberName), EventAttributes.None, MemberType.GetMetaInfo ()); EventBuilder.SetAddOnMethod (AddBuilder); EventBuilder.SetRemoveOnMethod (RemoveBuilder); spec = new EventSpec (Parent.Definition, this, MemberType, ModFlags, Add.Spec, remove.Spec); Parent.MemberCache.AddMember (this, GetFullName (MemberName), spec); Parent.MemberCache.AddMember (this, AddBuilder.Name, Add.Spec); Parent.MemberCache.AddMember (this, RemoveBuilder.Name, remove.Spec); return true; }
public override bool Define() { if (!base.Define ()) return false; if (!TypeManager.IsDelegateType (MemberType)) { Report.Error (66, Location, "`{0}': event must be of a delegate type", GetSignatureForError ()); } parameters = ParametersCompiled.CreateFullyResolved ( new Parameter (null, "value", Parameter.Modifier.NONE, null, Location), MemberType); if (!CheckBase ()) return false; // // Now define the accessors // AddBuilder = Add.Define (Parent); if (AddBuilder == null) return false; RemoveBuilder = Remove.Define (Parent); if (RemoveBuilder == null) return false; EventBuilder = Parent.TypeBuilder.DefineEvent (Name, EventAttributes.None, MemberType.GetMetaInfo ()); EventBuilder.SetAddOnMethod (AddBuilder); EventBuilder.SetRemoveOnMethod (RemoveBuilder); var spec = new EventSpec (Parent.Definition, this, MemberType, ModFlags, Add.Spec, Remove.Spec); Parent.MemberCache.AddMember (this, Name, spec); Parent.MemberCache.AddMember (this, AddBuilder.Name, Add.Spec); Parent.MemberCache.AddMember (this, RemoveBuilder.Name, Remove.Spec); return true; }