<Type Name="DiagnosticsConfigurationHandler" FullName="System.Diagnostics.DiagnosticsConfigurationHandler">
  <TypeSignature Language="C#" Maintainer="auto" Value="public class DiagnosticsConfigurationHandler : System.Configuration.IConfigurationSectionHandler" />
  <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit DiagnosticsConfigurationHandler extends System.Object implements class System.Configuration.IConfigurationSectionHandler" />
  <AssemblyInfo>
    <AssemblyName>System</AssemblyName>
    <AssemblyPublicKey>[00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00]</AssemblyPublicKey>
    <AssemblyVersion>1.0.3300.0</AssemblyVersion>
    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
    <AssemblyVersion>2.0.0.0</AssemblyVersion>
    <AssemblyVersion>4.0.0.0</AssemblyVersion>
  </AssemblyInfo>
  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the &lt;link location="node:gtk-sharp/programming/threads"&gt;Gtk# Thread Programming&lt;/link&gt; for details.</ThreadSafetyStatement>
  <Base>
    <BaseTypeName>System.Object</BaseTypeName>
  </Base>
  <Interfaces>
    <Interface>
      <InterfaceName>System.Configuration.IConfigurationSectionHandler</InterfaceName>
    </Interface>
  </Interfaces>
  <Attributes>
    <Attribute>
      <AttributeName>System.Obsolete("This class is obsoleted")</AttributeName>
    </Attribute>
  </Attributes>
  <Docs>
    <summary>A .config file section handler that handles initialization of diagnostic messages (and related settings).</summary>
    <remarks>
      <para>Paraphrasing the .NET SDK documentation: "This type is for internal use ONLY.  Please Ignore it."</para>
      <para>We're Mono, so we can do better than that.  This class handles the &lt;system.diagostics/&gt; element in the application .config file, permitting the management of <see cref="T:System.Diagnostics.TraceListener" />s, <see cref="T:System.Diagnostics.Switch" />es, and related classes.</para>
      <para>This class is listed in the "machine.config" file, in a (XPath) /configuration/configSections/section element.  Machine.config is read by <see cref="T:System.Configuration.ConfigurationSettings" /> during .config file handling.</para>
    </remarks>
  </Docs>
  <Members>
    <Member MemberName=".ctor">
      <MemberSignature Language="C#" Value="public DiagnosticsConfigurationHandler ();" />
      <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
      <MemberType>Constructor</MemberType>
      <AssemblyInfo>
        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
        <AssemblyVersion>2.0.0.0</AssemblyVersion>
        <AssemblyVersion>4.0.0.0</AssemblyVersion>
      </AssemblyInfo>
      <ReturnValue />
      <Parameters />
      <Docs>
        <summary>Constructs a new instance of the <see cref="T:System.Diagnostics.DiagnosticsConfigurationHandler" /> class.</summary>
        <remarks>
          <para>Paraphrasing the .NET SDK documentation: "This type is for internal use ONLY.  Please Ignore it."</para>
          <para>We're Mono, so we can do better than that.  This creates a new instance of the <see cref="T:System.Diagnostics.DiagnosticsConfigurationHandler" /> class.</para>
        </remarks>
      </Docs>
    </Member>
    <Member MemberName="Create">
      <MemberSignature Language="C#" Value="public virtual object Create (object parent, object configContext, System.Xml.XmlNode section);" />
      <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance object Create(object parent, object configContext, class System.Xml.XmlNode section) cil managed" />
      <MemberType>Method</MemberType>
      <AssemblyInfo>
        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
        <AssemblyVersion>2.0.0.0</AssemblyVersion>
        <AssemblyVersion>4.0.0.0</AssemblyVersion>
      </AssemblyInfo>
      <ReturnValue>
        <ReturnType>System.Object</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="parent" Type="System.Object" />
        <Parameter Name="configContext" Type="System.Object" />
        <Parameter Name="section" Type="System.Xml.XmlNode" />
      </Parameters>
      <Docs>
        <param name="parent">Parent settings.  Must be <see langword="null" /> or an object implementing the <see cref="T:System.Collections.IDictionary" /> and <see cref="T:System.ICloneable" /> interfaces.</param>
        <param name="configContext">Ignored.</param>
        <param name="section">The XML section from the .config file to parse.</param>
        <summary>Parses and returns the settings in the specified XML element.</summary>
        <returns>An object implementing the <see cref="T:System.Collections.IDictionary" /> interface which contains the settings specified in the XML section <paramref name="section" />.</returns>
        <remarks>
          <para>Parses the XML element <paramref name="section" />, interpreting it as if it were a &lt;system.diagnostics/&gt; .config file section (which, generally, it should be, except in the unit tests).  During the parse, the following things are done:</para>
          <list type="bullet">
            <item>
              <term>
                <see cref="T:System.Diagnostics.TraceListener" />s are added and removed</term>
            </item>
            <item>
              <term>
                <see cref="T:System.Diagnostics.Switch" /> settings are recorded (which are later looked up by the Switch objects when the current values are needed)</term>
            </item>
            <item>
              <term>The <see cref="T:System.Diagnositcs.DefaultTraceListener" /> is initialized, setting the <see cref="P:System.Diagnostics.DefaultTraceListener.AssertUiEnabled" /> and <see cref="P:System.Diagnostics.DefaultTraceListener.LogFileName" /> properties, if specified.</term>
            </item>
          </list>
          <para>The &lt;system.diagnostics/&gt; .config file section is (or should be) specified elsewhere.  The Mono Handbook would be a good place for this information, anyway...</para>
        </remarks>
      </Docs>
    </Member>
  </Members>
</Type>
