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
Eseguire script pre e post esecuzione di un workflow di GitHub
Gestire i dati con Azure Cosmos DB Data Explorer
Collegare applicazioni server e client con .NET Aspire
Disabilitare le run concorrenti di una pipeline di Azure DevOps
Applicare un filtro per recuperare alcune issue di GitHub
Utilizzare l nesting nativo dei CSS
Inference di dati strutturati da testo con Semantic Kernel e ASP.NET Core Web API
Usare i servizi di Azure OpenAI e ChatGPT in ASP.NET Core con Semantic Kernel
Recuperare App Service cancellati su Azure
Sfruttare GPT-4o realtime su Azure Open AI per conversazioni vocali
Ridurre il reflow cambiando il CSS
Utilizzare EF.Constant per evitare la parametrizzazione di query SQL
I più letti di oggi
- prenota subito i nostri nuovi libri su #aspnet45, #aspnetmvc 4, #csharp5, #vb2012, #vs2012: https://aspit.co/ad1 15% di sconto @Hoepli_1870
- #Windows10 e #UWP: non perdere il 15/12 il nostro streaming gratuito #aspilive https://aspit.co/Win10-Live
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Impostare una policy di retry con Polly e IHttpClientFactory in #aspnetcore2.1 https://aspit.co/bpm di @GentiliMoreno #webapi #aspnetcore1
- Gestire il warmup di una web app #azure in bilanciamento di carico https://aspit.co/bqo di @CristianCivera
- Gestire la documentazione di più versioni della stessa API su #aspnetcore2.1 https://aspit.co/bqs di @crad77 #webapi
- Web UI interattive con #blazor Server https://aspit.co/bw9 di @GentiliMoreno #aspnetcore3 #netcore3
- Use Firebase in #PWA https://aspit.co/b2g
- Testare le impostazioni CORS di un'applicazione #aspnetcore https://aspit.co/b4p di @crad77 #webapi
- @scottgu mostra come creare app per #wp7 a #pdc10 http://u.aspitalia.com/n3