コード例 #1
0
        public void TestGetSet()
        {
            IMultiMap <int, int> map = HashMultiMap <int, int> .Create();

            map.Add(2, 3);
            map.Add(2, 4);
            map.Add(2, 5);
            System.Collections.Generic.ISet <int> set = map.GetSet(2);
            Assert.IsTrue(set.Contains(3));
            Assert.IsTrue(set.Contains(4));
            Assert.IsTrue(set.Contains(5));
        }
コード例 #2
0
ファイル: EventBus.cs プロジェクト: supersdar/EventBus
        /// <summary>
        /// Unregister the instance as subscriber.
        /// </summary>
        /// <Preconditions>
        /// @object is not null.
        /// The method Regiter is activated on the instance @object.
        /// </Preconditions>
        /// <param name="object">Instance to be unregistered</param>
        public void UnRegister(Object @object)
        {
            IMultiMap <Type, EventHandler> methodsInListener     = finder.FindAllHandlers(@object);
            ISet <EventHandler>            eventMethodsInListner = null;

            foreach (Type eventType in methodsInListener.Keys)
            {
                eventMethodsInListner = methodsInListener.GetSet(eventType);
                handlersByTypeLock.EnterWriteLock();
                try
                {
                    ISet <EventHandler> currentHandlers = handlersByType.GetSet(eventType);
                    if (!eventMethodsInListner.IsSubsetOf(currentHandlers))
                    {
                        throw new ArgumentException("missing event handlers for an annotated method. Is " + @object.ToString() + " registered?");
                    }
                    currentHandlers.RemoveAll <EventHandler>(eventMethodsInListner);
                }
                finally
                {
                    handlersByTypeLock.ExitWriteLock();
                }
            }
        }