Ejemplo n.º 1
0
        public MutableEventInfo AddEvent(
            string name,
            Type handlerType,
            MethodAttributes accessorAttributes,
            Func <MethodBodyCreationContext, Expression> addBodyProvider,
            Func <MethodBodyCreationContext, Expression> removeBodyProvider,
            Func <MethodBodyCreationContext, Expression> raiseBodyProvider = null)
        {
            ArgumentUtility.CheckNotNullOrEmpty("name", name);
            ArgumentUtility.CheckNotNull("handlerType", handlerType);
            ArgumentUtility.CheckNotNull("addBodyProvider", addBodyProvider);
            ArgumentUtility.CheckNotNull("removeBodyProvider", removeBodyProvider);
            // Raise body provider may be null.

            var event_ = _mutableMemberFactory.CreateEvent(
                this, name, handlerType, accessorAttributes, addBodyProvider, removeBodyProvider, raiseBodyProvider);

            _addedEvents.Add(event_);

            AddTrackedMethod(event_.MutableAddMethod);
            AddTrackedMethod(event_.MutableRemoveMethod);
            if (event_.MutableRaiseMethod != null)
            {
                AddTrackedMethod(event_.MutableRaiseMethod);
            }

            return(event_);
        }