Constructors and Finalizers:
*Generic Static Constructors
If the type on which the static constructor is declared is generic, the static constructor will be called once for each unique combination of generic arguments.
class Animal<T>
{
static Animal()
{
Console.WriteLine(typeof(T).FullName);
}
public static void Yawn() { }
}
Animal<Object>.Yawn();
Animal<String>.Yawn();
This will output:
System.Object System.String
See also How do static constructors for generic types work ?