protected internal override void RemoveNode(SiteMapNode node) { if (node == null) { throw new ArgumentNullException("node"); } SiteMapProvider provider = node.Provider; if (provider != this) { for (SiteMapProvider provider2 = provider.ParentProvider; provider2 != this; provider2 = provider2.ParentProvider) { if (provider2 == null) { throw new InvalidOperationException(System.Web.SR.GetString("XmlSiteMapProvider_cannot_remove_node", new object[] { node.ToString(), this.Name, provider.Name })); } } } if (node.Equals(provider.GetRootNodeCore())) { throw new InvalidOperationException(System.Web.SR.GetString("SiteMapProvider_cannot_remove_root_node")); } if (provider != this) { provider.RemoveNode(node); } base.RemoveNode(node); }
protected internal override void RemoveNode(SiteMapNode node) { if (node == null) { throw new ArgumentNullException("node"); } SiteMapProvider ownerProvider = node.Provider; if (ownerProvider != this) { // Only nodes defined in this provider tree can be removed. SiteMapProvider parentProvider = ownerProvider.ParentProvider; while (parentProvider != this) { if (parentProvider == null) { // Cannot remove nodes defined in other providers throw new InvalidOperationException( SR.GetString(SR.XmlSiteMapProvider_cannot_remove_node, node.ToString(), this.Name, ownerProvider.Name)); } parentProvider = parentProvider.ParentProvider; } } if (node.Equals(ownerProvider.GetRootNodeCore())) { throw new InvalidOperationException(SR.GetString(SR.SiteMapProvider_cannot_remove_root_node)); } if (ownerProvider != this) { // Remove node from the owner provider. ownerProvider.RemoveNode(node); } base.RemoveNode(node); }