/// <summary>
        /// Locates or creates a <see cref="NamedEvent"/> and subscribes a consumer
        /// </summary>
        /// <param name="subscriber">Identifier of the subscriber class</param>
        /// <param name="name">The name of the <see cref="NamedEvent"/> to subscribe to</param>
        /// <param name="handler">The <see cref="NamedEventReturnHandler"/> containing the link to the consuming method</param>
        public void SubscribeWithReturn(string subscriber, string name, NamedEventReturnHandler handler)
        {
            NamedEvent subscription = subscriptions.FirstOrDefault(s => s.Name == name);

            if (subscription != null)
            {
                if (!subscription.Subscribers.Contains(subscriber))
                {
                    subscription.Subscribers.Add(subscriber);
                }

                subscription.ReturnHandler -= handler;
                subscription.ReturnHandler += handler;
            }
            else
            {
                subscription = new NamedEvent(name, handler);
                subscription.Subscribers.Add(subscriber);
                subscriptions.Add(subscription);
            }
        }
Exemplo n.º 2
0
 /// <summary>
 /// Initializes a new instance of the <see cref="NamedEvent"/> class
 /// </summary>
 /// <param name="name">The name of the event</param>
 /// <param name="handler">A delegate containing a link to the consuming event method</param>
 public NamedEvent(string name, NamedEventReturnHandler handler)
 {
     this.Name           = name;
     this.ReturnHandler += handler;
 }