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.

  • 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.
        ...
    }
    

Dotyczy interfejsów API