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 il tag HTML template
Personalizzare le richieste con i rule set di Azure Front Door
Usare il versioning con i controller di ASP.NET Core Web API
Mostrare una preview durante l'upload di un'immagine in Blazor
Trasformare qualsiasi backend in un servizio GraphQL con Azure API Management
.NET 7 Live Q&A
Gestire dati sensibili nella configurazione in ASP.NET Core
Innestare una query nel metodo Contains di Entity Framework Core
Abilitare HTTP/3 in ASP.NET Core 7.0
Utilizzare gli snapshot con Azure File shares
Sfruttare l'output cache di ASP.NET Core 7 con i controller
Gestire la query string nell'output cache di ASP.NET Core