Skip to content

v1.1.0 - New Financial Features

Choose a tag to compare

@agdgb agdgb released this 05 Apr 12:19
· 35 commits to main since this release
cc03cfa

What's Changed

  • Feature/financial extensions by @agdgb in #2
  • Feature/financial extensions by @agdgb in #3

Full Changelog: main...feature/financial-extensions

v1.1.0 - Financial Domain Extensions & Production Hardening 🚀

This release introduces comprehensive support for the financial domain, including Basis Points, Fractional Pricing, and spelled-out numbers for check writing, along with significant production hardening for complex model binding.

💎 Financial Domain Features

  • Basis Points (BPS) Support: Seamlessly serialize and deserialize between decimal values and BPS strings (e.g., 0.0125 ↔ "125 bps") using the new [BasisPoints] attribute.
  • Fractional Pricing (Treasury Markets): Support for bond market fractional notation (e.g., 101.5 ↔ "101 16/32") via the [FractionPrice] attribute.
  • Spelled-Out Numbers (Check Writing): New .ToWords() and .ToCheckWords() extensions to convert amounts into legal/check-friendly text (e.g., "Five Thousand Four Hundred Thirty-Two and 10/100").
  • Check Amount Tag Helper: Added <check-amount /> Tag Helper for Razor and MVC applications.

🛡️ Production Hardening

  • Recursive Property Mapping: Attributes now support recursive mapping for:
    • decimal? (Nullable support)
    • List<decimal> and decimal[] (Collection support)
    • Dictionary<string, decimal> (Dictionary support)
  • JSON Resilience: Improved System.Text.Json integration to handle quoted numbers (AllowReadingFromString) matching real-world financial API formats.
  • Full API Documentation: Added comprehensive XML documentation (CS1591) for all public members to ensure a warning-free, professional build.

🎮 Demo & Playground

  • Implemented an interactive Financial Systems Playground in the Example project.
  • Added live JSON round-trip validation and real-time word-form previews.
  • Fixed UI issues (page jumping) when selecting presets.