Tra le varie novità di .NET 7, una gradita introduzione è stata l'interfaccia IParsable
public record Money(string Currency, decimal Value) : IParsable<Money> { // altro codice qui... public override string ToString() { return $"Currency: {Currency} - Value: {Value}"; } }
Possiamo implementare l'interfaccia IParsable con il codice seguente, in modo da convertire facilmente una string in un oggetto Money:
public static Money Parse(string? value, IFormatProvider? provider) { var tokens = value?.Split(' '); if (tokens?.Length != 2) { throw new ArgumentException("Money must be in the format '{Currency} {Value}'."); } return new Money(tokens[0], decimal.Parse(tokens[1], provider)); } public static bool TryParse(string? value, IFormatProvider? provider, out Money result) { try { result = Money.Parse(value, provider); return true; } catch (Exception) { result = default; return false; } }
A questo punto, possiamo utilizzare il nostro tipo Money in una qualsiasi action, esattamente come faremmo con una string o un int, dato che ASP.NET Core invocherà automaticamente il nostro metodo TryParse per provare a convertire il valore in query string nell'oggetto vero e proprio:
[HttpGet] public IActionResult Get(Money amount) { return this.Ok(amount); }

Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Ottenere un token di accesso per una GitHub App
Gestione dei nomi con le regole @layer in CSS
Gestire i dati con Azure Cosmos DB Data Explorer
Gestione dell'annidamento delle regole dei layer in CSS
Usare il colore CSS per migliorare lo stile della pagina
Utilizzare EF.Constant per evitare la parametrizzazione di query SQL
Usare i servizi di Azure OpenAI e ChatGPT in ASP.NET Core con Semantic Kernel
Migliorare i tempi di risposta di GPT tramite lo streaming endpoint in ASP.NET Core
Ricevere notifiche sui test con Azure Load Testing
Rendere le variabili read-only in una pipeline di Azure DevOps
Gestione degli stili CSS con le regole @layer
La gestione della riconnessione al server di Blazor in .NET 9