//------------------------------------------------------------------------------ // // // Microsoft // Copyright (c) Microsoft Corporation. All rights reserved. // //------------------------------------------------------------------------------ namespace System.CodeDom { using System.Diagnostics; using System; using Microsoft.Win32; using System.Collections; using System.Runtime.Serialization; using System.Runtime.InteropServices; /// /// /// Represents a /// namespace declaration. /// /// [ ClassInterface(ClassInterfaceType.AutoDispatch), ComVisible(true), Serializable, ] public class CodeNamespace: CodeObject { private string name; private CodeNamespaceImportCollection imports = new CodeNamespaceImportCollection(); private CodeCommentStatementCollection comments = new CodeCommentStatementCollection(); private CodeTypeDeclarationCollection classes = new CodeTypeDeclarationCollection(); #if CODEDOM_NESTED_NAMESPACES private CodeNamespaceCollection namespaces = new CodeNamespaceCollection(); #endif private int populated = 0x0; private const int ImportsCollection = 0x1; private const int CommentsCollection = 0x2; private const int TypesCollection = 0x4; #if CODEDOM_NESTED_NAMESPACES private const int NamespacesCollection = 0x8; #endif /// /// /// An event that will be fired the first time the Comments Collection is accessed. /// /// public event EventHandler PopulateComments; /// /// /// An event that will be fired the first time the Imports Collection is accessed. /// /// public event EventHandler PopulateImports; #if CODEDOM_NESTED_NAMESPACES /// /// /// An event that will be fired the first time the Namespaces Collection is accessed. /// /// public event EventHandler PopulateNamespaces; #endif /// /// /// An event that will be fired the first time the Types Collection is accessed. /// /// public event EventHandler PopulateTypes; /// /// /// Initializes a new instance of . /// /// public CodeNamespace() { } /// /// /// Initializes a new instance of using the specified name. /// /// public CodeNamespace(string name) { Name = name; } private CodeNamespace(SerializationInfo info, StreamingContext context) { } /// /// /// Gets or sets the collection of classes. /// /// public CodeTypeDeclarationCollection Types { get { if (0 == (populated & TypesCollection)) { populated |= TypesCollection; if (PopulateTypes != null) PopulateTypes(this, EventArgs.Empty); } return classes; } } /// /// /// Gets or sets the collection of namespace imports used by the represented /// namespace. /// /// public CodeNamespaceImportCollection Imports { get { if (0 == (populated & ImportsCollection)) { populated |= ImportsCollection; if (PopulateImports != null) PopulateImports(this, EventArgs.Empty); } return imports; } } /// /// /// Gets or sets the name of the namespace. /// /// public string Name { get { return (name == null) ? string.Empty : name; } set { name = value; } } #if CODEDOM_NESTED_NAMESPACES /// /// /// Gets or sets the collection of Namespaces. /// /// public CodeNamespaceCollection Namespaces { get { if (0 == (populated & NamespacesCollection)) { populated |= NamespacesCollection; if (PopulateNamespaces != null) PopulateNamespaces(this, EventArgs.Empty); } return namespaces; } } #endif /// /// /// Gets or sets the member comment collection members. /// /// public CodeCommentStatementCollection Comments { get { if (0 == (populated & CommentsCollection)) { populated |= CommentsCollection; if (PopulateComments != null) PopulateComments(this, EventArgs.Empty); } return comments; } } } }