Example #1
0
 public void Invoke(NotifiableObject notifier, PropertyChangedEventArgsEx args, PropertyChangeEvent eventType)
 {
     if (notifier != null)
     {
         if (this.ContainsKey(notifier) && this[notifier] != null)
         {
             foreach (var handlers in this[notifier].Where(item => item.Item1 == args.PropertyName))
             {
                 //changing handler[1]
                 if (eventType == PropertyChangeEvent.Changing)
                 {
                     if (handlers.Item2 != null)
                     {
                         handlers.Item2(notifier, args);
                     }
                 }
                 else
                 {
                     if (handlers.Item3 != null)
                     {
                         handlers.Item3(notifier, args);
                     }
                 }
             }
         }
     }
 }
Example #2
0
        private void Register(NotifiableObject notifier, string propertyName, PropertyChangedHandlerEx changingHandler, PropertyChangedHandlerEx changedHandler)
        {
            lock (_syncObj)
            {
                if (notifier != null)
                {
                    var pair    = new Tuple <string, PropertyChangedHandlerEx, PropertyChangedHandlerEx>(propertyName, changingHandler, changedHandler);
                    var regItem = ContainsKey(notifier) ? this[notifier] : new SortedSet <Tuple <string, PropertyChangedHandlerEx, PropertyChangedHandlerEx> >();
                    if (!ContainsKey(notifier))
                    {
                        this[notifier] = regItem;
                    }
                    else
                    {
                        var existed = regItem.Where(item => item.Item1 == propertyName && item.Item2 == changingHandler && item.Item3 == changedHandler);
                        if (existed != null && existed.Count() > 0)
                        {
                            Logger.WarnFormat("there is register handler on property {0} change.", propertyName);
                            return;
                        }
                    }

                    regItem.Add(pair);
                }
            }
        }
Example #3
0
 public override void UnregisterHandler(NotifiableObject notifier, string propertyName, PropertyChangedHandlerEx changingHandler, PropertyChangedHandlerEx changedHandler)
 {
     if (notifier != null)
     {
         _registry.UnregisterHandler(notifier, propertyName, changingHandler, changedHandler);
     }
     else
     {
         Logger.ErrorFormat("Listener object is null when unregister handler");
         throw new Exception("Listener object is null when unregister handler");
     }
 }
Example #4
0
 private void Unregister(NotifiableObject notifier, string propertyName, PropertyChangedHandlerEx changingHandler, PropertyChangedHandlerEx changedHandler)
 {
     lock (_syncObj)
     {
         if (notifier != null)
         {
             if (this.ContainsKey(notifier) && this[notifier] != null)
             {
                 this[notifier].RemoveWhere(item => item.Item1 == propertyName && item.Item2 == changingHandler && item.Item3 == changedHandler);
             }
         }
     }
 }
Example #5
0
 public override void RegisterHandler(NotifiableObject notifier, string propertyName, PropertyChangedHandlerEx changingHandler, PropertyChangedHandlerEx changedHandler)
 {
     if (notifier != null)
     {
         _registry.RegisterHandler(notifier, propertyName, changingHandler, changedHandler);
         if (!_registered.Contains(notifier))
         {
             notifier.PropertyChangedEx  += (sender, args) => { Invoke(sender, args, PropertyChangeEvent.Changed); };
             notifier.PropertyChangingEx += (sender, args) => { Invoke(sender, args, PropertyChangeEvent.Changing); };
         }
     }
     else
     {
         Logger.ErrorFormat("Listener object is null when register handler");
         throw new Exception("Listener object is null when register handler");
     }
 }
Example #6
0
        public void RegisterToNotify(NotifiableObject sender, string property)
        {
            if (_notifiers.ContainsKey(sender))
            {
                lock (sender)
                {
                    _notifiers[sender].Add(property);
                }
            }
            else
            {
                var properties = new SortedSet <string>
                {
                    property
                };
                _notifiers[sender] = properties;
            }

            CheckTask();
        }
Example #7
0
 public void UnregisterHandler(NotifiableObject notifier, string propertyName, PropertyChangedHandlerEx changingHandler, PropertyChangedHandlerEx changedHandler)
 {
     Unregister(notifier, propertyName, changingHandler, changedHandler);
 }
Example #8
0
 public void UnregisterListener(NotifiableObject notifier, string propertyName, PropertyChangedHandlerEx handler)
 {
     Unregister(notifier, propertyName, null, handler);
 }
 public PropertyInterceptor(NotifiableObject obj)
 {
     Notifier = obj;
 }
Example #10
0
 public abstract void HandleError(NotifiableObject source, PropertyChangedEventArgsEx args);