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
Mischiare codice server side e client side in una query LINQ con Entity Framework
Running workloads and operations with Azure Kubernetes Service
Interazione con ReconnectModal in Blazor
Esporre un server MCP con Azure API Management
Gestire pubblicazione Kubernetes tramite .NET Aspire
Ciclo di vita risorse con .NET Aspire
Creare una cache temporanea in JavaScript
Configurare OpenAI in .NET Aspire
Ricerca delle GitHub issue tramite operatori logici
Utilizzare zizmor per rendere più sicuri i workflow di GitHub
Abilitare .NET 10 su Azure App Service e Azure Functions
Leggere i parametri da riga di comando in una file based app .NET


