﻿<?xml version="1.0" encoding="utf-8"?><Type Name="AvoidDeepNamespaceHierarchyRule" FullName="Gendarme.Rules.Naming.AvoidDeepNamespaceHierarchyRule"><TypeSignature Language="C#" Value="public class AvoidDeepNamespaceHierarchyRule : Gendarme.Framework.Rule, Gendarme.Framework.IAssemblyRule" /><TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit AvoidDeepNamespaceHierarchyRule extends Gendarme.Framework.Rule implements class Gendarme.Framework.IAssemblyRule, class Gendarme.Framework.IRule" /><AssemblyInfo><AssemblyName>Gendarme.Rules.Naming</AssemblyName><AssemblyVersion>3.10.0.0</AssemblyVersion></AssemblyInfo><Base><BaseTypeName>Gendarme.Framework.Rule</BaseTypeName></Base><Interfaces><Interface><InterfaceName>Gendarme.Framework.IAssemblyRule</InterfaceName></Interface></Interfaces><Attributes><Attribute><AttributeName>Gendarme.Framework.EngineDependency(typeof(Gendarme.Framework.Engines.NamespaceEngine))</AttributeName></Attribute><Attribute><AttributeName>Gendarme.Framework.Problem("The depth of the namespace hierarchy is getting out of control.")</AttributeName></Attribute><Attribute><AttributeName>Gendarme.Framework.Solution("Try to keep the depth below 4, with an additional one for specialization (e.g. Design, Interop, Permissions).")</AttributeName></Attribute></Attributes><Docs><summary>
            This rule checks for deeply nested namespaces within an assembly. It will
            warn if the depth is greater than four (default value) unless the fifth (or the
            next) part is one of the specialized name that the framework recommends or a
            name like an internal namespace (something not meant to be seen outside the assembly).
            <list><item><term>Design</term><description>Namespace that provides design-time
            support for its base namespace.</description></item><item><term>Interop</term><description>Namespace that provides all interoperability
            code (e.g. p./invokes) for its base namespace.</description></item><item><term>Permissions</term><description>Namespace that provides all custom
            permissions for its base namespace.</description></item><item><term>Internal</term><description>Namespace that provides non visible (outside
            the assembly) helper code for its base namespace. <c>Impl</c> while allowed by the
            rule is not encouraged.
            </description></item></list></summary><remarks>To be added.</remarks><example>
            Bad example:
            <code>
            namespace One.Two.Three.Four.Five {
            	internal class Helper {
            	}
            }
            </code></example><example>
            Good example:
            <code>
            namespace One.Two.Three.Four {
            	internal class FiveHelper {
            	}
            }
            </code></example><example>
            Good example (exception for some namespace specialization):
            <code>
            namespace One.Two.Three.Four.Internal {
            	internal class Helper {
            	}
            }
            </code></example></Docs><Members><Member MemberName=".ctor"><MemberSignature Language="C#" Value="public AvoidDeepNamespaceHierarchyRule ();" /><MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" /><MemberType>Constructor</MemberType><AssemblyInfo><AssemblyVersion>3.10.0.0</AssemblyVersion></AssemblyInfo><Parameters /><Docs><summary>To be added.</summary><remarks>To be added.</remarks></Docs></Member><Member MemberName="CheckAssembly"><MemberSignature Language="C#" Value="public Gendarme.Framework.RuleResult CheckAssembly (Mono.Cecil.AssemblyDefinition assembly);" /><MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance valuetype Gendarme.Framework.RuleResult CheckAssembly(class Mono.Cecil.AssemblyDefinition assembly) cil managed" /><MemberType>Method</MemberType><AssemblyInfo><AssemblyVersion>3.10.0.0</AssemblyVersion></AssemblyInfo><ReturnValue><ReturnType>Gendarme.Framework.RuleResult</ReturnType></ReturnValue><Parameters><Parameter Name="assembly" Type="Mono.Cecil.AssemblyDefinition" /></Parameters><Docs><param name="assembly">To be added.</param><summary>To be added.</summary><returns>To be added.</returns><remarks>To be added.</remarks></Docs></Member><Member MemberName="MaxDepth"><MemberSignature Language="C#" Value="public int MaxDepth { get; set; }" /><MemberSignature Language="ILAsm" Value=".property instance int32 MaxDepth" /><MemberType>Property</MemberType><AssemblyInfo><AssemblyVersion>3.10.0.0</AssemblyVersion></AssemblyInfo><Attributes><Attribute><AttributeName>System.ComponentModel.DefaultValue(4)</AttributeName></Attribute><Attribute><AttributeName>System.ComponentModel.Description("The depth at which namespaces may be nested without triggering a defect.")</AttributeName></Attribute></Attributes><ReturnValue><ReturnType>System.Int32</ReturnType></ReturnValue><Docs><summary>The depth at which namespaces may be nested without triggering a defect.</summary><value>To be added.</value><remarks>Defaults to 4.</remarks></Docs></Member><Member MemberName="Solution"><MemberSignature Language="C#" Value="public override string Solution { get; }" /><MemberSignature Language="ILAsm" Value=".property instance string Solution" /><MemberType>Property</MemberType><AssemblyInfo><AssemblyVersion>3.10.0.0</AssemblyVersion></AssemblyInfo><ReturnValue><ReturnType>System.String</ReturnType></ReturnValue><Docs><summary>To be added.</summary><value>To be added.</value><remarks>To be added.</remarks></Docs></Member></Members></Type>