Molto spesso capita di avere attributi di cui dobbiamo impostare una proprietà di tipo Type. A partire dalla versione 11, C# permette di creare attributi che accettano un parametro generico sostituendo la proprietà di tipo Type.
public class GenericAttribute<T> : Attribute { } public class MyClass { [MyGenericAttribute<string>()] public void Method() { //code } }
Quando usiamo questa funzionalità dobbiamo tenere presente che ci sono alcune limitazioni. La prima è che visto che gli attributi devono essere completi già a design time, non possiamo usare parametri generici ereditati dalla classe. Per fare un esempio, il seguente codice non è valido.
public class GenericType<T> { [GenericAttribute<T>()] // Errore public void Method() { //code } }
Un'altra limitazione è che alcuni tipi non sono direttamente supportati come dynamic, i tipi nullabili e le tuple. Questi possono essere sostituiti con tipi simili, come object per dynamic, string per string? (e lo stesso per tutti i tipi nullable), e ValueTuple<> per le tuple.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Semplificare il deployment di siti statici con Azure Static Web App
Evitare il flickering dei componenti nel prerender di Blazor 8
Creare moduli CSS in React
Sfruttare MQTT in cloud e in edge con Azure Event Grid
Code scanning e advanced security con Azure DevOps
Eseguire query manipolando liste di tipi semplici con Entity Framework Core
Evitare la command injection in un workflow di GitHub
Ottenere il contenuto di una cartella FTP con la libreria FluentFTP
Short-circuiting della Pipeline in ASP.NET Core
Come migrare da una form non tipizzata a una form tipizzata in Angular
Usare il versioning con i controller di ASP.NET Core Web API
Workflow di continuous deployment tramite pull request label in GitHub