public bool PathExists(string path) { var pathVariants = path.NamespacePathBreakdown(); if (this.Parent is INamespaceDeclaration) { pathVariants = pathVariants.Except(((INamespaceDeclaration)(this.Parent)).FullName.NamespacePathBreakdown()).ToArray(); } IIntermediateNamespaceDictionary current = this; foreach (var currentPath in pathVariants) { if (!current.ContainsKey(currentPath)) { return(false); } current = current[currentPath].Namespaces; } return(true); }
/// <summary> /// Disposes the <see cref="IntermediateNamespaceDeclaration"/> /// </summary> /// <param name="disposing">whether to dispose the managed /// resources as well as the unmanaged resources.</param> protected override void Dispose(bool disposing) { try { if (disposing) { lock (this.SyncObject) { this.parent = null; if (this.methods != null) { this.methods.Dispose(); this.methods = null; } if (this.fields != null) { this.fields.Dispose(); this.fields = null; } if (this.members != null) { if (this.IsRoot) { this.members.Dispose(); } else { this.members.ConditionalRemove(this); } this.members = null; } if (this.classes != null) { this.classes.Dispose(); this.classes = null; } if (this.enums != null) { this.enums.Dispose(); this.enums = null; } if (this.delegates != null) { this.delegates.Dispose(); this.delegates = null; } if (this.interfaces != null) { this.interfaces.Dispose(); this.interfaces = null; } if (this.structs != null) { this.structs.Dispose(); this.structs = null; } if (this.types != null) { if (this.IsRoot) { this.types.Dispose(); } else { this.types.ConditionalRemove(this); } this.types = null; } if (this.namespaces != null) { this.namespaces.Dispose(); this.namespaces = null; } this.scopeCoercions = null; } } } finally { base.Dispose(disposing); } }