Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
.NET 6 förhandsgranskar en ny funktion där static gränssnittsmedlemmar kan markeras som abstract. Den här funktionen omfattar flera ändringar i ECMA 335-specifikationen för att tillåta metadatamönster för mellanliggande språk (IL) som tidigare ansågs vara olagliga. Mer information finns i dotnet/runtime#49558.
Gammalt beteende
Om ett statiskt gränssnitt har markerats som abstract:
- C#-kompilatorn genererade felet CS0112.
- Verktyg och andra kompilatorer genererade olagliga IL-metadata.
Nytt beteende
Från och med .NET 6 kan statiska gränssnittsmedlemmar markeras som abstract och kompileras. Dessutom anses de IL-metadatamönster som genereras nu vara lagliga på grund av ändringar i ECMA 335-specifikationen.
Implementeringen av static abstract gränssnittsmedlemmar tillhandahålls av typer som implementerar gränssnittet.
Anmärkning
För .NET 6 måste du aktivera förhandsgranskningsfunktioner i projektet för att kunna markera en gränssnittsmedlem som static abstract.
Eftersom det här är ett nyligen lagligt IL-mönster kan befintliga verktyg felaktigt bearbeta associerade metadata och ha oväntat beteende. Det är troligt att verktyg kommer att stöta på det nya metadatamönstret, eftersom gränssnitt med static abstract medlemmar nu visas på de primitiva typerna, till exempel System.Int32.
Version lanserad
.NET 6
Typ av brytande ändring
Den här ändringen kan påverka binär kompatibilitet.
Orsak till ändring
Den här ändringen infördes eftersom det inte fanns något sätt att abstrahera över statiska medlemmar och skriva generaliserad kod som gäller för olika typer som definierar dessa statiska medlemmar. Detta var särskilt problematiskt för medlemstyper som bara finns i statisk form, till exempel operatorer.
Rekommenderad åtgärd
Uppdatera alla verktyg som använder .NET-binärfiler eller C#-källkod för att ta hänsyn till det nya begreppet gränssnittsmedlemmar static abstract , inklusive de som nu finns på .NET-primitiva typer.
Berörda API:er
Inte tillgänglig