απαιτήσεις: Τροποποιήστε την τιμή των στατικών πεδίων μόνο για ανάγνωση, για κάποιο λόγο, η τιμή των στατικών πεδίων μόνο για ανάγνωση δεν μπορεί να τροποποιηθεί από τον πηγαίο κώδικα, ούτε μπορεί η τροποποίηση να είναι επιτυχής μέσω αντανάκλασης, μπορείτε να προσπαθήσετε να τροποποιήσετε το περιεχόμενο του πεδίου μόνο για ανάγνωση με το UnsafeAccessor.
UnsafeAccessorΧαρακτηριστικόΤάξη: Παρέχει πρόσβαση σε έναν συγκεκριμένο τύπο μη προσβάσιμου μέλους.
Οι αποδόσεις είναι οι εξής:
Ο κωδικός έχει ως εξής:
Το UnsafeAccessor υποστηρίζει γενόσημα φάρμακα;
Το .NET 8 εισήγαγε την ιδιότητα UnsafeAccessorAttribute, η οποία επιτρέπει την πρόσβαση σε αόρατα μέλη του τύπου (γνωστή και ως "γρήγορη ιδιωτική αντανάκλαση"). Λόγω χρονικών περιορισμών, η υποστήριξη για γενόσημα δεν προστέθηκε στο .NET 8. Ωστόσο, στο CoreCLR και στο εγγενές AOT, ορισμένες πολύ στενές και μη υποστηριζόμενες περιπτώσεις χρήσης που περιλαμβάνουν κλειστούς γενικούς τύπους λειτουργούν. Αυτές οι περιπτώσεις χρήσης έπρεπε να αποκλειστούν, αλλά απροσδόκητα δεν αποκλείστηκαν. Νέοι περιορισμοί προστέθηκαν στο .NET 9.
Στην επίσημη έκδοση .NET 8, η χρήση γενικών τύπων που δεν υποστηρίζονται σκόπιμα για το UnsafeAccessorAttribute δεν είναι σκόπιμη. Στις πρώτες μέρες της ανάπτυξης, ήταν μια δυνητικά υποστηριζόμενη περίπτωση χρήσης, αλλά αργότερα καθυστέρησε στο .NET 9 επειδή η ομάδα αντιμετώπισε προβλήματα πολυπλοκότητας. Η επίσημη τεκμηρίωση δεν αναφέρει γενόσημα και δεν παρέχει παραδείγματα χρήσης γενόσημων. Αυτή η αλλαγή διορθώνει τη συμπεριφορά. Ερμηνεία: Δεν υποστηρίζεται επίσημα, αλλά μπορεί να χρησιμοποιηθεί στο .NET 8 (αν και μπορεί να χρησιμοποιηθεί, αλλά ο επίσημος δεν εγγυάται την ορθότητα) και αυτό το σφάλμα έχει διορθωθεί στο .NET 9.
Αναφορά:
Η σύνδεση με υπερσύνδεσμο είναι ορατή.
Η σύνδεση με υπερσύνδεσμο είναι ορατή.
Η σύνδεση με υπερσύνδεσμο είναι ορατή. |