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 ?