Each specialization of a generic type is treated as a unique type when it comes to things like static members. For example, with this type:
class GenericType
{
public static int SomeValue;
}
The assert succeeds if we do this:
GenericType.SomeValue = 3;
Debug.Assert(GenericType.SomeValue == 0);
This is because:
typeof(GenericType) != typeof(GenericType)
Even though
typeof(GenericType.GetGenericTypeDefinition() == typeof(GenericType).GetGenericTypeDefinition()