<Type Name="TypeExtensionNode" FullName="Mono.Addins.TypeExtensionNode">
  <TypeSignature Language="C#" Value="public class TypeExtensionNode : Mono.Addins.InstanceExtensionNode" />
  <AssemblyInfo>
    <AssemblyName>Mono.Addins</AssemblyName>
    <AssemblyVersion>0.4.0.0</AssemblyVersion>
    <AssemblyVersion>1.0.0.0</AssemblyVersion>
  </AssemblyInfo>
  <Base>
    <BaseTypeName>Mono.Addins.InstanceExtensionNode</BaseTypeName>
  </Base>
  <Interfaces />
  <Docs>
    <summary>An extension node which specifies a type.</summary>
    <remarks>
      <para>This class is a kind of <see cref="T:Mono.Addins.ExtensionNode" /> which can be used to register types in an extension point. This is a very common case: a host application defines an interface, and add-ins create classes that implement that interface. The host will define an extension point which will use TypeExtensionNode as node type. Add-ins will register the classes they implement in that extension point.
</para>
      <para>
When the nodes of an extension point are of type TypeExtensionNode it is then possible to use query methods such as <see cref="M:Mono.Addins.AddinManager.GetExtensionObjects(System.String)" />, which will get all nodes in the provided extension path and will create an object for each node.
</para>
      <para>
When declaring extension nodes in an add-in manifest, the class names can be specified using the 'class' or 'type' attribute. If none of those attributes is provided, the class name will be taken from the 'id' attribute.
</para>
      <block subset="none" type="note">
        <para>
TypeExtensionNode is the default extension type used when no type is provided in the definition of an extension point.
  </para>
      </block>
      <example>
        <code lang="XML">
&lt;Addin id = "WriterService" version = "0.1.0" isroot="true"&gt;

	&lt;Runtime&gt;
		&lt;Import assembly="WriterService.dll"/&gt;
	&lt;/Runtime&gt;
	
	&lt;ExtensionPoint path = "/WriterService/Writers"&gt;
		&lt;ExtensionNode id="Writer" type="TypeExtensionNode"/&gt;
	&lt;/ExtensionPoint&gt;
	
&lt;/Addin&gt;
  </code>
      </example>
    </remarks>
  </Docs>
  <Members>
    <Member MemberName=".ctor">
      <MemberSignature Language="C#" Value="public TypeExtensionNode ();" />
      <MemberType>Constructor</MemberType>
      <Parameters />
      <Docs>
        <summary>Initializes a new instance.</summary>
        <remarks />
      </Docs>
      <AssemblyInfo>
        <AssemblyVersion>0.4.0.0</AssemblyVersion>
      </AssemblyInfo>
    </Member>
    <Member MemberName="CreateInstance">
      <MemberSignature Language="C#" Value="public override object CreateInstance ();" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Object</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>Creates a new extension object.</summary>
        <returns>The new instance.</returns>
        <remarks>Creates a new extension object of the type represented by this node.</remarks>
      </Docs>
      <AssemblyInfo>
        <AssemblyVersion>0.4.0.0</AssemblyVersion>
      </AssemblyInfo>
    </Member>
    <Member MemberName="Read">
      <MemberSignature Language="C#" Value="protected override void Read (Mono.Addins.NodeElement elem);" />
      <MemberType>Method</MemberType>
      <AssemblyInfo>
        <AssemblyVersion>0.4.0.0</AssemblyVersion>
      </AssemblyInfo>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="elem" Type="Mono.Addins.NodeElement" />
      </Parameters>
      <Docs>
        <param name="elem">To be added.</param>
        <summary>To be added.</summary>
        <remarks>To be added.</remarks>
      </Docs>
    </Member>
    <Member MemberName="Type">
      <MemberSignature Language="C#" Value="public Type Type { get; }" />
      <MemberType>Property</MemberType>
      <AssemblyInfo>
        <AssemblyVersion>0.4.0.0</AssemblyVersion>
      </AssemblyInfo>
      <ReturnValue>
        <ReturnType>System.Type</ReturnType>
      </ReturnValue>
      <Docs>
        <summary>To be added.</summary>
        <value>To be added.</value>
        <remarks>To be added.</remarks>
      </Docs>
    </Member>
  </Members>
  <Attributes>
    <Attribute>
      <AttributeName>Mono.Addins.ExtensionNode("Type", Description="Specifies a class that will be used to create an extension object.")</AttributeName>
    </Attribute>
    <Attribute>
      <AttributeName>Mono.Addins.NodeAttribute("class", typeof(System.Type, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089), false, Description="Name of the class. If a value is not provided, the class name will be taken from the 'id' attribute")</AttributeName>
    </Attribute>
  </Attributes>
</Type>
