Dela via


Rollbesättning av RCW till ett InterfaceIsIInspectable gränssnitt genererar PlatformNotSupportedException

Gjuter en runtime-anropsbar omslutning (RCW) till ett gränssnitt som markerats som InterfaceIsIInspectable nu genererar en PlatformNotSupportedException. Den här ändringen är en uppföljning av borttagningen av WinRT-stöd från .NET.

Version introducerad

.NET 5

Ändra beskrivning

I tidigare .NET-versioner gjuter du en RCW till ett gränssnitt som markerats som InterfaceIsIInspectable fungerat som förväntat. Från och med .NET 5, gjuter en RCW till ett gränssnitt som markerats som InterfaceIsIInspectable genererar en PlatformNotSupportedException vid gjutning.

Orsak till ändringen

Stödet för InterfaceIsIInspectable har tagits bort. Eftersom det underliggande stödet i körningen inte längre finns, aktiverar genererar en PlatformNotSupportedException graciös felsökväg. Om du utlöser ett undantag blir det också enklare att upptäcka att den här funktionen inte längre stöds.

  • Om du kan definiera gränssnittet i en WinMD-fil (Windows Runtime Metadata) använder du C#/WinRT-verktyget i stället.

  • Annars markerar du gränssnittet som InterfaceIsIUnknown i stället för InterfaceIsIInspectableoch lägger till tre dummy-poster i början av gränssnittet för InterfaceIsIInspectable metoderna. Följande kodfragment visar ett exempel.

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

Berörda API:er