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
Documentare i servizi REST con Swagger e OpenAPI con .NET 9
Utilizzare Containers in .NET Aspire
Gestire il routing HTTP in Azure Container App
Rendere le variabili read-only in una pipeline di Azure DevOps
Collegare applicazioni server e client con .NET Aspire
Pubblicare un MCP Server in GitHub MCP Registry
Eliminare record doppi in Sql Server
Scrivere selettori CSS più semplici ed efficienti con :is()
Mischiare codice server side e client side in una query LINQ con Entity Framework
Utilizzare Locust con Azure Load Testing
Utilizzare l'espressione if inline in una pipeline di Azure DevOps
Arricchire l'interfaccia di .NET Aspire
I più letti di oggi
- Utilizzo delle stepped value functions nel CSS
- Utilizzare @property per animare nativamente un oggetto HTML tramite CSS
- Self-healing degli unit test con Copilot in GitHub
- Effettuare un clone parziale di un repository di GitHub
- Personalizzare le pagine di errore su Azure App Service
- Integrare Agenti A2A in Azure API Management
- Scegliere la strategia di traduzione della Contains in Entity Framework 10


