Mono.CSharp.Event.Define C# (CSharp) Method

Define() public method

public Define ( ) : bool
return bool
        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 ());
            }

            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, Name, spec);
            Parent.MemberCache.AddMember (this, AddBuilder.Name, Add.Spec);
            Parent.MemberCache.AddMember (this, RemoveBuilder.Name, remove.Spec);

            return true;
        }