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 la funzione EF.Parameter per forzare la parametrizzazione di una costante con Entity Framework
Utilizzare Azure Cosmos DB con i vettori
Selettore CSS :has() e i suoi casi d'uso avanzati
Garantire la provenienza e l'integrità degli artefatti prodotti su GitHub
Aprire una finestra di dialogo per selezionare una directory in WPF e .NET 8
Autenticarsi in modo sicuro su Azure tramite GitHub Actions
Utilizzare Azure AI Studio per testare i modelli AI
Come EF 8 ha ottimizzato le query che usano il metodo Contains
Sfruttare gli embedding e la ricerca vettoriale con Azure SQL Database
Utilizzare l'espressione if inline in una pipeline di Azure DevOps
Modificare i metadati nell'head dell'HTML di una Blazor Web App
Miglioramenti nelle performance di Angular 16