Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
.NET 6 présente une nouvelle fonctionnalité où static membres d’interface peuvent être marqués comme abstract. Cette fonctionnalité implique plusieurs modifications apportées à la spécification ECMA 335 pour autoriser les modèles de métadonnées de langage intermédiaire (IL) qui étaient précédemment considérés comme non autorisés. Pour plus d’informations, consultez dotnet/runtime#49558.
Ancien comportement
Si une interface statique était marquée abstract :
- Le compilateur C# a généré l’erreur CS0112.
- Les outils et autres compilateurs ont généré des métadonnées IL illégales.
Nouveau comportement
À compter de .NET 6, les membres de l’interface statique peuvent être marqués comme abstract et compileront correctement. En outre, les modèles de métadonnées IL générés sont désormais considérés comme juridiques en raison des modifications apportées aux spécifications ECMA 335.
L'implémentation des membres d'une interface static abstract est assurée par les types qui implémentent l'interface.
Remarque
Pour .NET 6, vous devez activer les fonctionnalités en préversion dans votre projet pour pouvoir marquer un membre d’interface en tant que static abstract.
Étant donné qu’il s’agit d’un modèle IL nouvellement légal, les outils existants peuvent traiter incorrectement les métadonnées associées et avoir un comportement inattendu. Il est probable que les outils rencontrent le nouveau modèle de métadonnées, car les interfaces comportant static abstract apparaissent désormais sur les types primitifs, par exemple System.Int32.
Version introduite
.NET 6
Type de changement cassant
Cette modification peut affecter la compatibilité binaire.
Raison de la modification
Cette modification a été introduite, car il n’y avait aucun moyen d’abstraction sur les membres statiques et d’écrire du code généralisé qui s’applique aux types qui définissent ces membres statiques. Cela était particulièrement problématique pour les types de membres qui existent uniquement sous une forme statique, par exemple des opérateurs.
Action recommandée
Mettez à jour tous les outils qui consomment des fichiers binaires .NET ou du code source C# pour tenir compte du nouveau concept de membres de static abstract l’interface, y compris ceux qui existent désormais sur les types primitifs .NET.
API affectées
N/A