/// <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); } }
/// <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; }