Exigences : Modifiez la valeur des champs statiques en lecture seule ; pour une raison quelconque, la valeur des champs statiques en lecture seule ne peut pas être modifiée à partir du code source, ni la modification peut être réussie par réflexion, vous pouvez essayer de modifier le contenu du champ en lecture seule avec UnsafeAccessor.
UnsafeAccessorAttributeClasse : Donne accès à un type spécifique de membre inaccessible.
Les rendus sont les suivants :
Le code est le suivant :
UnsafeAccessor prend-il en charge les génériques ?
.NET 8 a introduit la propriété UnsafeAccessorAttribute, qui permet d’accéder à des membres invisibles du type (également appelé « réflexion privée rapide »). En raison de contraintes de temps, le support des génériques n’a pas été ajouté dans .NET 8. Cependant, dans CoreCLR et AOT natif, certains cas d’usage très restreints et non pris en charge impliquant des types génériques fermés fonctionnent. Ces cas d’usage étaient censés être bloqués, mais de manière inattendue, ils ne l’ont pas été. De nouvelles restrictions ont été ajoutées dans .NET 9.
Dans la version officielle .NET 8, l’utilisation de types génériques qui ne sont pas intentionnellement pris en charge pour UnsafeAccessorAttribute n’est pas intentionnelle. Au début du développement, c’était un cas d’usage potentiellement supporté, mais il a ensuite été retardé vers .NET 9 car l’équipe a rencontré des problèmes de complexité. La documentation officielle ne mentionne pas les génériques et ne fournit aucun exemple d’utilisation des génériques. Ce changement corrige le comportement. Interprétation : Il n’est pas officiellement pris en charge, mais il peut être utilisé en .NET 8 (bien qu’il soit utilisable, mais l’officiel ne garantit pas sa correction), et ce bug a été corrigé dans .NET 9.
Référence:
La connexion hyperlientérée est visible.
La connexion hyperlientérée est visible.
La connexion hyperlientérée est visible. |