Dela via


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.

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