Freigeben über


Type.GetType löst Ausnahme für alle ungültigen Elementtypen aus.

Type.GetType(String) löst jetzt einen TypeLoadException für alle Typen mit einem ungültigen Elementtyp aus, einschließlich byref-of-byref. Zuvor wurde null diese Methode für einige Corner Cases zurückgegeben.

Vorheriges Verhalten

Type.GetType(String) Hat für TypeLoadException die meisten Typen einen ungültigen Elementtyp mit Ausnahme einiger Corner Cases wie byref-of-byref angezeigt. Beispielsweise der folgende Code, der null in .NET 7 zurückgegeben wird:

Type.GetType("System.Object&&")

Neues Verhalten

Type.GetType(String) löst einen TypeLoadException für alle Typen mit einem ungültigen Elementtyp aus, einschließlich byref-of-byref. Beispielsweise löst der folgende Code (der null in .NET 7 zurückgegeben wird) eine Ausnahme in .NET 8 aus:

Type.GetType("System.Object&&")

Eingeführt in Version

.NET 8

Typ des Breaking Changes

Diese Änderung ist eine Verhaltensänderung.

Grund für die Änderung

.NET hatte mehrere Typennamen-Parser, und es war nicht ungewöhnlich, dass sie in Corner Cases wie dieser ein anderes Verhalten aufweisen. Das Verhalten wurde vereinheitlicht bei:

  • Wenn der Typ mit dem angegebenen Namen nicht gefunden wird, geben Sie den Wert null zurück.
  • Wenn der Typ ungültig ist, wird TypeLoadException ausgelöst. "Ungültige" Typen umfassen Typen mit generischen Einschränkungsverletzungen oder eine ungültige Zusammensetzung von Parametertypen.

Wenn Ihr Code auf einen null Rückgabewert für diese Corner Cases angewiesen ist, ändern Sie ihn stattdessen, um einen TypeLoadException abzufangen.

Betroffene APIs