Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
RCW casten naar een
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.
Aanbevolen actie
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. ... }