CQRSalad.Dispatching.Subscriptions.DispatcherSubscriptionsStore.Add C# (CSharp) Метод

Add() публичный Метод

public Add ( DispatcherSubscription subscription ) : void
subscription DispatcherSubscription
Результат void
        public void Add(DispatcherSubscription subscription)
        {
            if (!_subscriptions.ContainsKey(subscription.MessageType))
            {
                _subscriptions[subscription.MessageType] =
                    new SortedSet<DispatcherSubscription>(
                        Comparer<DispatcherSubscription>.Create((d1, d2) => d1.Priority.CompareTo(d2.Priority))); //todo static?
            }

            _subscriptions[subscription.MessageType].Add(subscription);
        }

Usage Example

        public DispatcherSubscriptionsStore Subscribe()
        {
            var store = new DispatcherSubscriptionsStore();

            IEnumerable<TypeInfo> handlerTypes = _handlersProvider.GetHandlerTypes();
            IEnumerable<HandlerDescriptor> handlerDescriptors = _handlerDescriptorsBuilder.CreateHandlerDescriptors(handlerTypes);

            foreach (HandlerDescriptor handlerDescriptor in handlerDescriptors)
            {
                var actionDescriptors = _actionDescriptorsBuilder.CreateActionDescriptors(handlerDescriptor);
                foreach (ActionDescriptor actionDescriptor in actionDescriptors)
                {
                    store.Add(
                        new DispatcherSubscription(
                            handlerDescriptor.HandlerType,
                            actionDescriptor.HandlerAction,
                            actionDescriptor.MessageType,
                            actionDescriptor.Priority != DispatchingPriority.Unspecified ? actionDescriptor.Priority : handlerDescriptor.Priority)); //todo move to priority resolver
                }
            }

            return store;
        }
DispatcherSubscriptionsStore