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
Configurare e gestire sidecar container in Azure App Service
Gestione degli stili CSS con le regole @layer
Utilizzare un numero per gestire la concorrenza ottimistica con SQL Server ed Entity Framework
Generare la software bill of material (SBOM) in GitHub
Ordine e importanza per @layer in CSS
Bloccare l'esecuzione di un pod in mancanza di un'artifact attestation di GitHub
Ottimizzare le performance usando Span<T> e il metodo Split
Utilizzare Locust con Azure Load Testing
Migliorare i tempi di risposta di GPT tramite lo streaming endpoint in ASP.NET Core
Generare una User Delegation SAS in .NET per Azure Blob Storage
Effettuare il log delle chiamate a function di GPT in ASP.NET Web API
Path addizionali per gli asset in ASP.NET Core MVC