public int RegisterEvent(EventInfo info, int type_id) { int num = this.AppVar(); this[num].Name = info.Name; this[num].Level = type_id; this[num].Kind = MemberKind.Event; this[num].TypeId = this.RegisterType(info.EventHandlerType, false); EventObject m = new EventObject(this.scripter, num, type_id); m.Imported = true; m.Event_Info = info; this[num].Val = m; ClassObject val = (ClassObject) this[type_id].Val; val.AddMember(m); m.OwnerType = val.ImportedType; MethodInfo addMethod = info.GetAddMethod(); if (addMethod != null) { m.AddId = this.RegisterMethod(addMethod, type_id); if (addMethod.IsPublic) { m.Modifiers.Add(Modifier.Public); } if (addMethod.IsStatic) { m.Modifiers.Add(Modifier.Static); } } MethodInfo removeMethod = info.GetRemoveMethod(); if (removeMethod != null) { m.RemoveId = this.RegisterMethod(removeMethod, type_id); if (removeMethod.IsPublic) { m.Modifiers.Add(Modifier.Public); } if (removeMethod.IsStatic) { m.Modifiers.Add(Modifier.Static); } } return num; }
private void OperCreateEvent() { int num = this.r.arg1; int id = this.r.arg2; int res = this.r.res; ClassObject classObject = this.GetClassObject(id); bool upcase = this.GetUpcase(); int nameIndex = this.symbol_table[num].NameIndex; if (classObject.GetMemberByNameIndex(nameIndex, upcase) != null) { string name = this.symbol_table[num].Name; this.scripter.CreateErrorObjectEx("CS0102. The class '{0}' already contains a definition for '{1}'.", new object[] { classObject.Name, name }); } else { EventObject obj4 = new EventObject(this.scripter, num, id); obj4.PCodeLine = this.n; this.PutVal(num, obj4); classObject.AddMember(obj4); this.n++; } }