Pomóżcie mi - dlaczego ten kod wywołuje wyjątek VerificationException po uruchomieniu w .NET 4.0?Dlaczego ta linia powoduje wyjątek VerificationException podczas działania w środowisku .NET 4?
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;
}
Pobiegłem peverify
na zespole .net 2.0 i mam następujący komunikat:
ImageResizer.Util.Utils :: parseEnum [T]] [offset 0x0000000A] do 'tego' parametru do wywołanie musi być parametrem "ten" metody wywołującej.
Powoduje to, że podczas uruchamiania kodu pod średnim zaufaniem pojawia się komunikat VerificationException: Operation could destabilize the runtime
.
Przeczytałem już wszystkie podobne, wyglądające posty na przepełnieniu stosu i żadne z nich nie ma zastosowania do tego kodu.
Czy jest coś nowego w przypadku leków generycznych, które spowodowałyby, że kod ten byłby w jakiś sposób nieprawidłowy?
Po prostu uruchomiłem ten kod i nie otrzymałem takiego wyjątku. Jesteś pewien, że to jest błąd? Czy to jest używane w asp? –
Czy generujesz zestaw .NET za pomocą programu Visual Studio lub innego kompilatora (np. Mono)? – Jacob
Komunikat o błędzie wskazuje, że znajduje się on na stronie wywołania (tj. W miejscu, w którym wywoływana jest metoda), która ma ten problem. Czy możesz nam pokazać ten kod? –