Type.GetType
vyvolá výjimku pro všechny neplatné typy elementů.
Type.GetType(String) nyní vyvolá TypeLoadException pro všechny typy s neplatným typem prvku, včetně byref-of-byref. Dříve se tato metoda vrátila null
pro některé rohové případy.
Předchozí chování
Type.GetType(String) Hodil TypeLoadException pro většinu typů s neplatným typem prvku, s výjimkou několika rohových případů, jako je byref-of-byref. Například následující kód vrácený null
v .NET 7:
Type.GetType("System.Object&&")
Nové chování
Type.GetType(String)TypeLoadException vyvolá pro všechny typy s neplatným typem prvku, včetně byref-of-byref. Například následující kód (vrácený null
v .NET 7) vyvolá výjimku v .NET 8:
Type.GetType("System.Object&&")
Zavedená verze
.NET 8
Typ zásadní změny
Tato změna je změna chování.
Důvod změny
Rozhraní .NET mělo více analyzátorů názvů typů a pro ně nebylo neobvyklé, že se v různých případech, jako je tento, chová různě. Chování bylo sjednocené na:
- Pokud typ s daným názvem nebyl nalezen, vraťte
null
. - Pokud je typ neplatný, vyhoďte TypeLoadException. Neplatné typy zahrnují typy s obecnými porušeními omezení nebo neplatným složením typů parametrů.
Doporučená akce
Pokud váš kód pro tyto případy spoléhal na návratovou null
hodnotu, změňte ho tak, aby se místo toho zachytil TypeLoadException .
Ovlivněná rozhraní API
- GetType(String)
- GetType(String, Boolean)
- GetType(String, Boolean, Boolean)
- GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>)
- GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean)
- GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean)
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro