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
Garantire la provenienza e l'integrità degli artefatti prodotti su GitHub
Utilizzare QuickGrid di Blazor con Entity Framework
Eliminare una project wiki di Azure DevOps
Simulare Azure Cosmos DB in locale con Docker
Migliorare i tempi di risposta di GPT tramite lo streaming endpoint in ASP.NET Core
Filtering sulle colonne in una QuickGrid di Blazor
Path addizionali per gli asset in ASP.NET Core MVC
Introduzione alle Container Queries
Persistere la ChatHistory di Semantic Kernel in ASP.NET Core Web API per GPT
Usare i settings di serializzazione/deserializzazione di System.Text.Json di ASP.NET all'interno di un'applicazione non web
Effettuare il log delle chiamate a function di GPT in ASP.NET Web API
Creare una libreria CSS universale: Immagini
I più letti di oggi
- Creare agenti facilmente con Azure AI Agent Service
- Loggare le query più lente con Entity Framework
- Rendere i propri workflow e le GitHub Action utilizzate più sicure
- Usare i settings di serializzazione/deserializzazione di System.Text.Json di ASP.NET all'interno di un'applicazione non web
- Disabilitare le run concorrenti di una pipeline di Azure DevOps
- Gestione degli eventi nei Web component HTML
- Fornire parametri ad un Web component HTML
- Introduzione ai web component HTML
- Documentare i servizi REST con Swagger e OpenAPI con .NET 9