Delen via


RCW casten naar een InterfaceIsIInspectable interface genereert PlatformNotSupportedException

Het casten van een runtime Callable Wrapper (RCW) naar een interface die is gemarkeerd met InterfaceIsIInspectable, werpt nu een PlatformNotSupportedException. Deze wijziging is een vervolg op het verwijderen van WinRT-ondersteuning van .NET.

Geïntroduceerde versie

.NET 5

Beschrijving wijzigen

In eerdere .NET-versies werkte het casten van een RCW naar een interface die gemarkeerd was als InterfaceIsIInspectable zoals verwacht. Vanaf .NET 5 geeft het casten van een RCW naar een interface die is gemarkeerd als InterfaceIsIInspectable een PlatformNotSupportedException bij het casten.

Reden voor wijziging

De ondersteuning voor InterfaceIsIInspectable is verwijderd. Omdat de onderliggende ondersteuning in de runtime niet meer bestaat, maakt het gooien van een PlatformNotSupportedException een gecontroleerde foutafhandeling mogelijk. Het gooien van een uitzondering maakt het ook makkelijker te ontdekken dat deze functie niet meer wordt ondersteund.

  • Als u de interface in een WinMD-bestand (Windows Runtime Metadata) kunt definiëren, gebruikt u in plaats daarvan het hulpprogramma C#/WinRT.

  • Anders markeert u de interface als InterfaceIsIUnknown in plaats van InterfaceIsIInspectableen voegt u drie dummyvermeldingen toe aan het begin van de interface voor de InterfaceIsIInspectable methoden. In het volgende codefragment ziet u een voorbeeld.

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

Betreffende API's