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.
Historiquement, le passage SafeHandlede types dérivés à P/Invokes et des méthodes COM a implicitement requis un constructeur sans paramètre de toute visibilité lorsqu’un SafeHandletype dérivé est passé en tant que ref paramètre ou out type de retour. L’interopérabilité générée par la source dans .NET 7 a permis ce comportement pour faciliter la migration à partir de DllImportAttributeP/Invokes basés sur des sources. En même temps, nous avons mis à jour la documentation SafeHandle pour indiquer aux implémenteurs de fournir un public constructeur sans paramètre dans leur type dérivé. Cette modification cassante rend cette recommandation requise pour le marshaling généré par la source.
Comportement précédent
Un SafeHandletype dérivé a été requis pour avoir un constructeur sans paramètre de toute visibilité lorsqu’il a été utilisé :
-
refEn tant que paramètre ououttype de retour dans une LibraryImportAttributeméthode -attributed. - Dans une méthode sur une GeneratedComInterfaceAttributeinterface -attributed.
Nouveau comportement
Un SafeHandletype dérivé est requis pour avoir un public constructeur sans paramètre lorsqu’il est utilisé :
-
refEn tant que paramètre ououttype de retour dans une LibraryImportAttributeméthode -attributed. - Dans une méthode sur une GeneratedComInterfaceAttributeinterface -attributed.
Si le type n’a pas de public constructeur sans paramètre, le générateur source d’interopérabilité émet une erreur de compilation.
Version introduite
.NET 8 Preview 5
Type de changement cassant
Cette modification peut affecter la compatibilité source .
Raison de la modification
Les générateurs de sources d’interopérabilité changent pour pousser davantage de code hors des générateurs sources eux-mêmes et dans les bibliothèques .NET principales. Dans le cadre de cette modification, l’équipe d’interopérabilité commence à appliquer les instructions recommandées pour un code d’interopérabilité plus gérable et compréhensible.
Action recommandée
Modifiez le constructeur sanspublic paramètre existant sur le SafeHandletype dérivé -comme publicétant .