Type.GetType
kivételt eredményez az összes érvénytelen elemtípus esetében
Type.GetType(String)Mostantól minden érvénytelen elemtípusú típushoz ad egy TypeLoadException elemet, beleértve a byref-of-byref típust is. Korábban ez a módszer néhány sarokesethez adott vissza null
.
Előző viselkedés
Type.GetType(String)TypeLoadException a legtöbb érvénytelen elemtípussal rendelkező típushoz dobta, kivéve néhány sarokesetet, például byref-of-byref. Például a .NET 7-ben visszaadott null
következő kód:
Type.GetType("System.Object&&")
Új viselkedés
Type.GetType(String)TypeLoadException érvénytelen elemtípusú összes típushoz ad egy elemet, beleértve a byref-of-byref típust is. Például a következő kód (amely a .NET 7-ben van visszaadva null
) kivételt eredményez a .NET 8-ban:
Type.GetType("System.Object&&")
Bevezetett verzió
.NET 8
A kompatibilitástörő változás típusa
Ez a változás viselkedésbeli változás.
A változás oka
A .NET-nek több típusnév-elemzője volt, és nem volt szokatlan számukra, hogy eltérő viselkedésük van az ilyen sarokesetekben. A viselkedés egységesítve lett:
- Ha a megadott névvel rendelkező típus nem található, adja vissza a következőt
null
: . - Ha a típus érvénytelen, dobjon.TypeLoadException Az "Érvénytelen" típusok közé tartoznak az általános korlátozási szabálysértéseket tartalmazó típusok, vagy a paramétertípusok érvénytelen összetétele.
Javasolt művelet
Ha a kód ezekhez a sarokesetekhez egy visszatérési értékre támaszkodott null
, módosítsa úgy, hogy helyette elkapjon egy TypeLoadException értéket.
Érintett API-k
- 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)