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
Autenticarsi in modo sicuro su Azure tramite GitHub Actions
Eseguire script pre e post esecuzione di un workflow di GitHub
Eseguire i worklow di GitHub su runner potenziati
Modificare i metadati nell'head dell'HTML di una Blazor Web App
Bloccare l'esecuzione di un pod in mancanza di un'artifact attestation di GitHub
Inference di dati strutturati da testo con Semantic Kernel e ASP.NET Core Web API
Sviluppare un'interfaccia utente in React con Tailwind CSS e Preline UI
Triggerare una pipeline su un altro repository di Azure DevOps
Cancellare una run di un workflow di GitHub
Gestire eccezioni nei plugin di Semantic Kernel in ASP.NET Core Web API
Creazione di componenti personalizzati in React.js con Tailwind CSS
Migliorare i tempi di risposta di GPT tramite lo streaming endpoint in ASP.NET Core