Недавно я снова посетил эту проблему в CLR4 и угадаю, что она исправлена. Следующие определения:
public struct SomeValueType{}
public enum SomeEnum
{
FirstElement
}
с этой программой
Console.WriteLine( typeof( Enum ).IsClass );
Console.WriteLine( typeof( SomeEnum ).IsClass );
Console.WriteLine( typeof( ValueType).IsClass );
Console.WriteLine( typeof( SomeValueType).IsClass );
Дает следующие результаты:
CLR2: False, False, True, False
CLR4: True, False, True, False