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
Eseguire query in contemporanea con EF
Utilizzare l'espressione if inline in una pipeline di Azure DevOps
Utilizzare il metodo IntersectBy per eseguire l'intersection di due liste
Utilizzare Hybrid Cache in .NET 9
Creare una libreria CSS universale - Rotazione degli elementi
Migliorare i tempi di risposta di GPT tramite lo streaming endpoint in ASP.NET Core
Gestire gli accessi con Token su Azure Container Registry
Disabilitare le run concorrenti di una pipeline di Azure DevOps
Proteggere le risorse Azure con private link e private endpoints
Gestione dei nomi con le regole @layer in CSS
Esporre i propri servizi applicativi con Semantic Kernel e ASP.NET Web API
Gestione file Javascript in Blazor con .NET 9
I più letti di oggi
- .NET Conference Italia 2024 - Milano
- Ancora un bug: esce Mono 0.23
- Metro Style App per Windows 8 con HTML e Javascript
- Scadenza della password in ASP.NET Identity
- Autorizzare una chiamata in base allo scope in ASP.NET Core
- Impostare il claim desiderato per il nome utente in ASP.NET Core con Microsoft Identity
- Leggere il valore di un header della richiesta in ASP.NET Core 6
- Convertire in un array di un tipo un ArrayList
- Tutorial Entity Framework 6
- ASP.NET 4.0 in C# e VB