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 manipolando le liste contenute in un oggetto mappato verso una colonna JSON
Configurare il nome della run di un workflow di GitHub in base al contesto di esecuzione
Utilizzare la funzione EF.Parameter per forzare la parametrizzazione di una costante con Entity Framework
Usare i servizi di Azure OpenAI e ChatGPT in ASP.NET Core con Semantic Kernel
Inference di dati strutturati da testo con Semantic Kernel e ASP.NET Core Web API
Disabilitare automaticamente un workflow di GitHub
Creare gruppi di client per Event Grid MQTT
Creazione di componenti personalizzati in React.js con Tailwind CSS
Cambiare la chiave di partizionamento di Azure Cosmos DB
Utilizzare i primary constructor di C# per inizializzare le proprietà
Criptare la comunicazione con mTLS in Azure Container Apps
I più letti di oggi
- Simulare Azure Cosmos DB in locale con Docker
- Utilizzare il metodo Index di LINQ per scorrere una lista sapendo anche l'indice dell'elemento
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- .NET Conference Italia 2024 - Milano
- .NET Conference Italia 2023 - Milano e Online