コード例 #1
0
        public void Subscription_Test()
        {
            var delegateCallCount = 0;

            var subscription = new DynamicSubscription <Test, EventHandler <EventArgs> >((test, handler) => test.TestEvent += handler,
                                                                                         (test, handler) => test.TestEvent -= handler);

            var instance = new Test();

            subscription.Subscribe(instance, (sender, args) => { delegateCallCount++; });
            instance.RaiseEvent();
            subscription.Unsubscribe(instance);
            instance.RaiseEvent();

            Assert.AreEqual(1, delegateCallCount);
        }
コード例 #2
0
ファイル: DeepTracker.cs プロジェクト: BlackGad/PS.Framework
        internal DeepTracker(TrackRouteConfiguration configuration, object source)
        {
            _configuration             = configuration;
            _sourceReference           = new WeakReference(source);
            _propertyChangedRegistry   = new Registry <Tuple <PropertyReference, object> >();
            _collectionChangedRegistry = new Registry <Tuple <WeakReference, object[]> >();
            _collectionChildrenIds     = new ConditionalWeakTable <object, string>();
            _attachmentObjectRegistry  = new Registry <WeakReference>();

            _propertyChangedSubscriptions = new DynamicSubscription <PropertyReference, EventHandler>(
                (changed, handler) => changed.TryAddValueChanged(handler),
                (changed, handler) => changed.TryRemoveValueChanged(handler));

            _collectionChangedSubscriptions = new DynamicSubscription <INotifyCollectionChanged, NotifyCollectionChangedEventHandler>(
                (changed, handler) => changed.CollectionChanged += handler,
                (changed, handler) => changed.CollectionChanged -= handler);
        }