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