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); } } } } } }
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); } } }
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"); } }
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); } } } }
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"); } }
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(); }
public void UnregisterHandler(NotifiableObject notifier, string propertyName, PropertyChangedHandlerEx changingHandler, PropertyChangedHandlerEx changedHandler) { Unregister(notifier, propertyName, changingHandler, changedHandler); }
public void UnregisterListener(NotifiableObject notifier, string propertyName, PropertyChangedHandlerEx handler) { Unregister(notifier, propertyName, null, handler); }
public PropertyInterceptor(NotifiableObject obj) { Notifier = obj; }
public abstract void HandleError(NotifiableObject source, PropertyChangedEventArgsEx args);