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);
        }
Beispiel #2
0
 /// <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);
     }
 }