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 ?