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
Creare un agente A2Acon Azure Logic Apps
Self-healing degli unit test con Copilot in GitHub
DevSecOps per .NET: dalla teoria alla pratica
Ottimizzare i costi con Smart tier in Azure Blob Storage
Effettuare un clone parziale di un repository di GitHub
Costruire endpoint SSE in ASP.NET Core
Gestione opzioni colonna nella Blazor QuickGrid
Creare un extension method per applicare condizionalmente una Where in una query LINQ per Entity Framework
Eseguire una ExecuteUpdateAsync senza usare un'expression con Entity Framework
Monitorare le tabelle di Azure SQL Database con Change Event Streaming
Impostare la content-visibility in CSS per ottimizare il rendering iniziale di una pagina
Ottimizzare gli indici con Automatic Index Compaction in Azure SQL Database


