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
Utilizzare Intersect e Except per filtrare set di dati in TSql
Testare il failover sulle region in Azure Storage
Creare una libreria CSS universale: Cards
Creare una libreria CSS universale: Nav menu
La gestione della riconnessione al server di Blazor in .NET 9
Anonimizzare i dati sensibili nei log di Azure Front Door
Inference di dati strutturati da testo con Semantic Kernel e ASP.NET Core Web API
Collegare applicazioni server e client con .NET Aspire
Aggiornare a .NET 9 su Azure App Service
Configurare automaticamente un webhook in Azure DevOps
Utilizzare Containers in .NET Aspire
Utilizzare l nesting nativo dei CSS