/// <summary> /// Add or remove change listeners as needed /// </summary> public void AddOrRemoveChangeListener(ExtensionPropertyChangedEventHandler handler, EventHandlerAction action) { IPropertyProvider interfaceInstance; if (null != (interfaceInstance = myInstance) && 0 != (interfaceInstance.ProviderFeatures & PropertyProviderFeatures.ChangeNotifications)) { if (action == EventHandlerAction.Add) { interfaceInstance.PropertyChanged += handler; } else { interfaceInstance.PropertyChanged -= handler; } } }
void IPropertyProviderService.AddOrRemoveChangeListener(Type extendableElementType, ExtensionPropertyChangedEventHandler handler, EventHandlerAction action) { if (extendableElementType == null) { throw new ArgumentNullException("extendableElementType"); } if ((object)handler == null) { throw new ArgumentNullException("handler"); } LinkedNode<ProviderInstance> providerNode; if (myProviderDictionary.TryGetValue(extendableElementType.TypeHandle, out providerNode)) { while (providerNode != null) { providerNode.Value.AddOrRemoveChangeListener(handler, action); providerNode = providerNode.Next; } } }
void IPropertyProviderService.AddOrRemoveChangeListener(Type extendableElementType, ExtensionPropertyChangedEventHandler handler, EventHandlerAction action) { if (extendableElementType == null) { throw new ArgumentNullException("extendableElementType"); } if ((object)handler == null) { throw new ArgumentNullException("handler"); } LinkedNode <CountedProviderInstance> providerNode; if (myProviderDictionary.TryGetValue(extendableElementType.TypeHandle, out providerNode)) { while (providerNode != null) { providerNode.Value.Instance.AddOrRemoveChangeListener(handler, action); providerNode = providerNode.Next; } } }