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 per recuperare il padre di un record che sfrutta il tipo HierarchyID in Entity Framework
Criptare la comunicazione con mTLS in Azure Container Apps
Evitare (o ridurre) il repo-jacking sulle GitHub Actions
Eseguire query manipolando liste di tipi semplici con Entity Framework Core
Le novità di Angular: i miglioramenti alla CLI
Esportare ed analizzare le issue di GitHub con la CLI e GraphQL
Miglioramenti agli screen reader e al contrasto in Angular
Utilizzare EF.Constant per evitare la parametrizzazione di query SQL
Migrare una service connection a workload identity federation in Azure DevOps
Effettuare il binding di date in Blazor
Utilizzare Copilot con Azure Cosmos DB
Generare un hash con SHA-3 in .NET
I più letti di oggi
- Effettuare il log delle chiamate a function di GPT in ASP.NET Web API
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Utilizzare il metodo CountBy di LINQ per semplificare raggruppamenti e i conteggi
- Creare una libreria CSS universale: Cards
- Eseguire script pre e post esecuzione di un workflow di GitHub