Example #1
0
        /// <summary>
        /// Создаёт объект <see cref="UniqueItemsContainerFactory{TKey,TItem}"/>
        /// </summary>
        /// <param name="itemsContainerFactory">Фабрика контейнеров, над элементами которых будет проверяться уникальность.</param>
        /// <param name="equalityComparer">Сравниватель элементов друг с другом.</param>
        public UniqueItemsContainerFactory(IItemsContainerFactory <TKey, TItem> itemsContainerFactory, IEqualityComparer <TItem> equalityComparer)
        {
            Contract.Requires <ArgumentNullException>(itemsContainerFactory != null);

            _itemsContainerFactory = itemsContainerFactory;
            _equalityComparer      = equalityComparer;
        }
Example #2
0
        /// <summary>
        /// Конструктор для создания <see cref="RoundRobinItemsGroupContainer{TRoundRobinKey,TItem}"/>.
        /// </summary>
        /// <param name="itemsContainerFactory">Фабрика создания контейнеров для групп.</param>
        /// <param name="itemToKeyConverter">Извлекатель ключей из элементов, по которым происходит группировка элементов.</param>
        public RoundRobinItemsGroupContainer(IItemsContainerFactory <TRoundRobinKey, TItem> itemsContainerFactory, IConverter <TItem, TRoundRobinKey> itemToKeyConverter)
        {
            Contract.Requires <ArgumentNullException>(itemsContainerFactory != null);
            Contract.Requires <ArgumentNullException>(itemToKeyConverter != null);

            _itemsContainerFactory = itemsContainerFactory;
            _itemToKeyConverter    = itemToKeyConverter;

            _grouppedQueues = new ConcurrentDictionary <TRoundRobinKey, IItemsContainer <TItem> >();
            _rrQueue        = new ConcurrentQueue <IItemsContainer <TItem> >();
        }
 /// <summary>
 /// Конструктор для создания <see cref="RoundRobinItemsGroupContainerFactory{TRoundRobinKey,TItem}"/>.
 /// </summary>
 /// <param name="itemsContainerFactory">Фабрика создания контейнеров для групп.</param>
 /// <param name="itemToKeyConverter">Извлекатель ключей из элементов, по которым происходит группировка элементов.</param>
 public RoundRobinItemsGroupContainerFactory(IItemsContainerFactory <TRoundRobinKey, TItem> itemsContainerFactory, IConverter <TItem, TRoundRobinKey> itemToKeyConverter)
 {
     _itemsContainerFactory = itemsContainerFactory;
     _itemToKeyConverter    = itemToKeyConverter;
 }