public void AddSubscription(ISubscription subscription)
{
this.Clean();
this.ThrowIfRepeatedSubscription(subscription.Subscriber, subscription.HandlerMethodName);
foreach (IPublication publication in this.publications)
{
ThrowIfPublisherAndSubscriberEventArgumentsMismatch(subscription, publication);
ThrowIfSubscriptionHandlerDoesNotMatchHandlerRestrictionOfPublisher(subscription, publication);
}
lock (this)
{
this.subscriptions = new List<ISubscription>(this.subscriptions) { subscription };
this.extensionHost.ForEach(extension => extension.CreatedSubscription(this, subscription));
}
this.extensionHost.ForEach(extension => extension.AddedSubscription(this, subscription));
}