using System;
namespace AnticipatingMinds.Genesis.CodeDOM{
/// <summary>
/// Represents a namespace declaration.
/// </summary>
/// <remarks>
/// Namespaces are used both as an internal organization system for a program, and as an external
/// organization systema way of presenting program elements that are exposed to other programs.
/// (ECMA 334. Page 203, Line 2)
/// </remarks>
[Serializable]
public class CodeNamespace : CodeElement
{
#region Instance constructors
/// <summary>
/// Initializes new instance of the <see cref="CodeNamespace"/> class.
/// </summary>
/// <param name="namespaceName">Namespace name.</param>
public CodeNamespace(string namespaceName)
{
this.namespaceName = namespaceName;
}
/// <summary>
/// Initializes new instance of the <see cref="CodeNamespace"/> class.
/// </summary>
public CodeNamespace()
{
this.namespaceName = string.Empty;
}
#endregion Instance constructors
#region Public instance properties
/// <summary>
/// Gets or sets declaring namespace.
/// </summary>
public CodeNamespace DeclaringNamespace
{
get
{
return Parent as CodeNamespace;
}
}
/// <summary>
/// Gets or sets the name of the namespace.
/// </summary>
public string Name
{
get
{
return namespaceName;
}
set
{
namespaceName = (value == null ? string.Empty:value);
}
}
/// <summary>
/// Gets namespace full name in the form of Parent.Self.
/// </summary>
public string FullName
{
get
{
if(DeclaringNamespace != null)
if(DeclaringNamespace.FullName.Length != 0)
return DeclaringNamespace.FullName + "." + Name;
return Name;
}
}
/// <summary>
/// Gets collection of nested namespaces.
/// </summary>
public CodeNamespaceCollection NestedNamespaces
{
get
{
return nestedNamespaces;
}
}
/// <summary>
/// Gets collection of types declared inside namespace.
/// </summary>
public CodeTypeDeclarationCollection DeclaredTypes
{
get
{
return typeDeclarations;
}
}
/// <summary>
/// Gets collection of namespace import directives used by the namespace.
/// </summary>
public CodeNamespaceImportCollection Imports
{
get
{
return importDeclarations;
}
}
#endregion Public instance properties
#region Private instance fields
private string namespaceName;
private CodeNamespaceCollection nestedNamespaces = new CodeNamespaceCollection();
private CodeTypeDeclarationCollection typeDeclarations = new CodeTypeDeclarationCollection();
private CodeNamespaceImportCollection importDeclarations = new CodeNamespaceImportCollection();
#endregion Private instance fields
}
}
|