Cerințe: Modifică valoarea câmpurilor statice doar pentru citire, dintr-un motiv oarecare, valoarea câmpurilor statice doar în citire nu poate fi modificată din codul sursă, nici modificarea nu poate fi reușită prin reflecție, poți încerca să modifici conținutul câmpului doar cu UnsafeAccessor.
UnsafeAccessorAttributeClasă: Oferă acces la un anumit tip de membru inaccesibil.
Randările sunt următoarele:
Codul este următorul:
UnsafeAccessor suportă generice?
.NET 8 a introdus proprietatea UnsafeAccessorAttribute, care permite accesul la membri invizibili ai tipului (cunoscut și ca "reflexie privată rapidă"). Din cauza constrângerilor de timp, suportul pentru generice nu a fost adăugat în .NET 8. Totuși, în CoreCLR și AOT nativ, unele cazuri de utilizare foarte restrânse și nesuportate care implică tipuri generice închise funcționează. Aceste cazuri de utilizare ar fi trebuit blocate, dar neașteptat nu au fost. Au fost adăugate noi restricții în .NET 9.
În versiunea oficială .NET 8, utilizarea tipurilor generice care nu sunt susținute intenționat pentru UnsafeAccessorAttribute nu este intenționată. În primele zile ale dezvoltării, era un caz de utilizare potențial suportat, dar ulterior a fost amânat pentru .NET 9 deoarece echipa s-a confruntat cu probleme de complexitate. Documentația oficială nu menționează genericele și nu oferă exemple de utilizare a genericelor. Această schimbare corectează comportamentul. Interpretare: Nu este suportat oficial, dar poate fi folosit în .NET 8 (deși poate fi folosit, însă oficialul nu garantează corectitudinea), iar acest bug a fost corectat în .NET 9.
Referință:
Autentificarea cu hyperlink este vizibilă.
Autentificarea cu hyperlink este vizibilă.
Autentificarea cu hyperlink este vizibilă. |