Пример #1
0
        private static void ThrowIfSubscriptionHandlerDoesNotMatchHandlerRestrictionOfPublisher(ISubscription subscription, IPublication publication)
        {
            if (publication.HandlerRestriction == HandlerRestriction.None)
            {
                return;
            }

            if ((int)subscription.Handler.Kind == (int)publication.HandlerRestriction)
            {
                return;
            }

            using (var writer = new StringWriter(CultureInfo.InvariantCulture))
            {
                writer.Write("Publication ");
                writer.WriteLine();
                publication.DescribeTo(writer);
                writer.WriteLine();
                writer.Write("does not allow subscription ");
                writer.WriteLine();
                subscription.DescribeTo(writer);
                writer.WriteLine();
                writer.Write(" because publisher requires the subscription handler to be ");
                writer.Write(publication.HandlerRestriction);

                throw new EventTopicException(writer.GetStringBuilder().ToString());
            }
        }
Пример #2
0
        private static void ThrowIfPublisherAndSubscriberEventArgumentsMismatch(ISubscription subscription, IPublication publication)
        {
            Type publisherEventArgsType  = publication.EventArgsType;
            Type subscriberEventArgsType = subscription.EventArgsType;

            // check that the T in EventHandler<T> is matching, the IsAssignableFrom method return false event if types can be assigned
            // e.g. EventHandler<CustomEventArgs> is not assignable to EventHandler<EventArgs> when using IsAssignableFrom directly on event handler type
            // therefore do the check on the event arguments type only.
            // subscriberEventArgsType can be null if the handler method has no parameters.
            if (subscriberEventArgsType != null && !subscriberEventArgsType.IsAssignableFrom(publisherEventArgsType))
            {
                using (var writer = new StringWriter(CultureInfo.InvariantCulture))
                {
                    writer.Write("Publication ");
                    writer.WriteLine();
                    publication.DescribeTo(writer);
                    writer.WriteLine();
                    writer.Write("does not match with subscription ");
                    writer.WriteLine();
                    subscription.DescribeTo(writer);

                    throw new EventTopicException(writer.GetStringBuilder().ToString());
                }
            }
        }
Пример #3
0
        private static void ThrowIfSubscriptionHandlerDoesNotMatchHandlerRestrictionOfPublisher(ISubscription subscription, IPublication publication)
        {
            if (publication.HandlerRestriction == HandlerRestriction.None)
            {
                return;
            }

            if ((int)subscription.Handler.Kind == (int)publication.HandlerRestriction)
            {
                return;
            }

            using (var writer = new StringWriter(CultureInfo.InvariantCulture))
            {
                writer.Write("Publication ");
                writer.WriteLine();
                publication.DescribeTo(writer);
                writer.WriteLine();
                writer.Write("does not allow subscription ");
                writer.WriteLine();
                subscription.DescribeTo(writer);
                writer.WriteLine();
                writer.Write(" because publisher requires the subscription handler to be ");
                writer.Write(publication.HandlerRestriction);

                throw new EventTopicException(writer.GetStringBuilder().ToString());
            }
        }
Пример #4
0
        private static void ThrowIfPublisherAndSubscriberEventArgumentsMismatch(ISubscription subscription, IPublication publication)
        {
            Type publisherEventArgsType = publication.EventArgsType;
            Type subscriberEventArgsType = subscription.EventArgsType;

            // check that the T in EventHandler<T> is matching, the IsAssignableFrom method return false event if types can be assigned
            // e.g. EventHandler<CustomEventArgs> is not assignable to EventHandler<EventArgs> when using IsAssignableFrom directly on event handler type
            // therefore do the check on the event arguments type only.
            // subscriberEventArgsType can be null if the handler method has no parameters.
            if (subscriberEventArgsType != null && !subscriberEventArgsType.IsAssignableFrom(publisherEventArgsType))
            {
                using (var writer = new StringWriter(CultureInfo.InvariantCulture))
                {
                    writer.Write("Publication ");
                    writer.WriteLine();
                    publication.DescribeTo(writer);
                    writer.WriteLine();
                    writer.Write("does not match with subscription ");
                    writer.WriteLine();
                    subscription.DescribeTo(writer);

                    throw new EventTopicException(writer.GetStringBuilder().ToString());
                }
            }
        }