Rzutowanie wersji RCW do interfejsu InterfaceIsIInspectable
zgłasza wyjątek PlatformNotSupportedException
Rzutowanie otoki z możliwością wywołania środowiska uruchomieniowego (RCW) do interfejsu oznaczonego jako InterfaceIsIInspectable teraz zgłasza element PlatformNotSupportedException. Ta zmiana jest następstwem usunięcia obsługi winRT z platformy .NET.
Wprowadzona wersja
.NET 5
Opis zmiany
W poprzednich wersjach platformy .NET odlewanie wersji RCW do interfejsu oznaczonego jako InterfaceIsIInspectable działało zgodnie z oczekiwaniami. Począwszy od platformy .NET 5, rzutowanie wersji RCW do interfejsu oznaczonego jako InterfaceIsIInspectable rzutowanie PlatformNotSupportedException w czasie rzutowania.
Przyczyna wprowadzenia zmiany
Obsługa InterfaceIsIInspectable programu została usunięta. Ponieważ podstawowa obsługa w środowisku uruchomieniowym już nie istnieje, zgłaszanie PlatformNotSupportedException parametru umożliwia bezproblemową ścieżkę niepowodzenia. Zgłaszanie wyjątku sprawia również, że łatwiej jest wykryć, że ta funkcja nie jest już obsługiwana.
Zalecana akcja
Jeśli możesz zdefiniować interfejs w pliku metadanych środowiska uruchomieniowego systemu Windows (WinMD), zamiast tego użyj narzędzia C#/WinRT.
W przeciwnym razie oznacz interfejs jako InterfaceIsIUnknown zamiast InterfaceIsIInspectable, i dodaj trzy fikcyjne wpisy na początku interfejsu dla InterfaceIsIInspectable metod. Poniższy fragment kodu przedstawia przykład.
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] interface IMine { // Do not call these three methods. // They're exclusively to fill in the slots in the vtable. void GetIIdsSlot(); void GetRuntimeClassNameSlot(); void GetTrustLevelSlot(); // The original members of the IMine interface go here. ... }