Type.GetType
genererar undantag för alla ogiltiga elementtyper
Type.GetType(String) genererar nu en TypeLoadException för alla typer med en ogiltig elementtyp, inklusive byref-of-byref. Tidigare returnerades null
den här metoden för vissa hörnfall.
Tidigare beteende
Type.GetType(String) kastade en TypeLoadException för de flesta typer med en ogiltig elementtyp, förutom några hörnfall som byref-of-byref. Följande kod returnerades null
till exempel i .NET 7:
Type.GetType("System.Object&&")
Nytt beteende
Type.GetType(String) genererar en TypeLoadException för alla typer med en ogiltig elementtyp, inklusive byref-of-byref. Följande kod (som returnerades null
i .NET 7) genererar till exempel ett undantag i .NET 8:
Type.GetType("System.Object&&")
Version introducerad
.NET 8
Typ av icke-bakåtkompatibel ändring
Den här ändringen är en beteendeförändring.
Orsak till ändringen
.NET hade flera parsare med typnamn och det var inte ovanligt att de hade olika beteende i hörnfall som det här. Beteendet var enhetligt på:
- Om typen med det angivna namnet inte hittas returnerar du
null
. - Om typen är ogiltig utlöser du TypeLoadException. "Ogiltiga" typer inkluderar typer med allmänna begränsningsöverträdelser eller ogiltig sammansättning av parametertyper.
Rekommenderad åtgärd
Om koden förlitade sig på ett null
returvärde för dessa hörnfall ändrar du den så att den fångar en TypeLoadException i stället.
Berörda API:er
- 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)
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för