Sdílet prostřednictvím


Přetypování RCW do InterfaceIsIInspectable rozhraní vyvolává výjimku PlatformNotSupportedException

Přetypování volatelné obálky modulu runtime (RCW) do rozhraní označeného jako InterfaceIsIInspectable nyní vyvolá PlatformNotSupportedExceptionvýjimku . Tato změna je následným odebráním podpory WinRT z .NET.

Zavedená verze

.NET 5

Změna popisu

V předchozích verzích .NET přetypování RCW na rozhraní označené jako InterfaceIsIInspectable fungovalo podle očekávání. Počínaje rozhraním .NET 5 přetypujte rcW na rozhraní označené jako InterfaceIsIInspectable vyvolání PlatformNotSupportedException času přetypování.

Důvod změny

Podpora byla InterfaceIsIInspectable odebrána. Vzhledem k tomu, že základní podpora v modulu runtime již neexistuje, vyvolání PlatformNotSupportedException povolení řádné cesty selhání. Vyvolání výjimky také zvyšuje zjistitelnost, že tato funkce už není podporovaná.

  • Pokud můžete definovat rozhraní v souboru metadat prostředí Windows runtime (WinMD), použijte místo toho nástroj C#/WinRT.

  • V opačném případě označte rozhraní jako InterfaceIsIUnknown místo InterfaceIsIInspectablea přidejte tři fiktivní položky na začátek rozhraní pro InterfaceIsIInspectable metody. Následující fragment kódu ukazuje příklad.

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

Ovlivněná rozhraní API