Почему эта строка вызывает исключение VerificationException при работе под .NET 4?

Помогите мне, народ - почему этот код вызывает исключение VerificationException при запуске под .NET 4.0?

public  T parseEnum<T>(string value, T defaultValue) {
  //Removing the following lines fixes the problem
  if (!typeof(T).IsEnum) throw new ArgumentException("T must be an enumerated type");
  return defaultValue;
}

Я запустил peverify в сборке .net 2.0 и получил следующее сообщение:

ImageResizer.Util.Utils :: parseEnum [T]] [offset 0x0000000A] Параметр this для вызова должен быть параметр this вызывающего метода.

Это вызывает исключение VerificationException: операция может дестабилизировать сообщение среды выполнения при запуске кода со средним уровнем доверия.

Я уже читал все похожие сообщения при переполнении стека, и ни один из них не применим к этому коду.

Есть ли что-то новое в дженериках, из-за чего этот код станет некорректным?

19
задан Lilith River 2 August 2011 в 23:29
поделиться