private void AddExtensionProvider(IElementExtendedPropertyProvider provider) { if (provider.CanExtend(subject)) { var extendedProperties = provider.GetExtendedProperties(subject).ToArray(); propertiesByExtensionProviders.Add(provider, extendedProperties); foreach (var extendedProperty in extendedProperties) { extendedProperty.Initialize(new InitializeContext()); properties.Add(extendedProperty); } } }
private void RemoveExtensionProvider(IElementExtendedPropertyProvider provider) { Property[] extendedProperties = null; if (propertiesByExtensionProviders.TryGetValue(provider, out extendedProperties)) { propertiesByExtensionProviders.Remove(provider); foreach (var property in extendedProperties) { properties.Remove(property); property.Dispose(); } } }