Click to expand
Sandcastle XML Comments Guide

typeparamref

This element is used to indicate that a word in the comments refers to a type parameter on a generic type.

Syntax

This inline element can be used within any other element on a generic type or its members. typeParamName is the name of the parameter being referenced.

<typeparamref name="typeParamName" />
Examples
/// <summary> 
/// This class is used to demonstrate the various XML comments elements 
/// related to generics.  It serves no useful purpose. 
/// </summary> 
/// <typeparam name="T1">This is the first generic argument.</typeparam> 
/// <typeparam name="T2">This is the second generic argument constrained to 
/// be or derive from <see cref="EventArgs"/>.</typeparam> 
/// <conceptualLink target="163cae15-9020-4095-9b9c-da134b5b496c" /> 
public class GenericClass<T1, T2> where T2 : EventArgs
{
    /// <summary> 
    /// This is a property that gets or sets an instance of the type specified 
    /// by the generic type argument <typeparamref name="T1"/>. 
    /// </summary> 
    /// <conceptualLink target="073a5ae1-828f-4bab-b0cb-438cefb5e9fb" /> 
    public T1 Property { get; set; }

    /// <summary> 
    /// This is a method with an argument. 
    /// </summary> 
    /// <param name="argument"> This is an argument of the type specified by 
    /// the generic type argument <typeparamref name="T1"/>.</param> 
    /// <conceptualLink target="073a5ae1-828f-4bab-b0cb-438cefb5e9fb" /> 
    public void Method(T1 argument)
    {
    }

    /// <summary> 
    /// This is a generic method that takes two other generic types 
    /// </summary> 
    /// <typeparam name="T3">This is a generic type argument for the method 
    /// argument.</typeparam> 
    /// <typeparam name="T4">This is a generic type argument for the return 
    /// value.</typeparam> 
    /// <param name="argument">This is an argument of the type specified by 
    /// the generic type argument <typeparamref name="T3"/>.</param> 
    /// <returns>The default value of the type specified by the generic type 
    /// argument <typeparamref name="T4"/>.</returns> 
    /// <conceptualLink target="163cae15-9020-4095-9b9c-da134b5b496c" /> 
    /// <conceptualLink target="073a5ae1-828f-4bab-b0cb-438cefb5e9fb" /> 
    public T4 GenericMethod<T3, T4>(T3 argument)
    {
        return default(T4);
    }

    /// <summary> 
    /// This is an event that takes a generic argument. 
    /// </summary> 
    /// <remarks>The <see cref="Delegate">delegate</see> for this event is 
    /// <see cref="EventHandler{T}"/> bound to the type specified by the 
    /// generic type argument <typeparamref name="T2"/>. 
    /// </remarks> 
    /// <conceptualLink target="073a5ae1-828f-4bab-b0cb-438cefb5e9fb" /> 
    public event EventHandler<T2> SomethingHappened;

    /// <summary> 
    /// This is a protected virtual method used to raise the 
    /// <see cref="SomethingHappened"/> event. 
    /// </summary> 
    /// <param name="e">Arguments for the event of the type specified by 
    /// the generic type argument <typeparamref name="T2"/>.</param> 
    /// <conceptualLink target="073a5ae1-828f-4bab-b0cb-438cefb5e9fb" /> 
    protected virtual void OnSomethingHappened(T2 e)
    {
        var handler = SomethingHappened;

        if(handler != null)
            handler(this, e);
    }
}
See Also

Reference

Other Resources