Lyo.Parameters 2.0.0

dotnet add package Lyo.Parameters --version 2.0.0
                    
NuGet\Install-Package Lyo.Parameters -Version 2.0.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Lyo.Parameters" Version="2.0.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Lyo.Parameters" Version="2.0.0" />
                    
Directory.Packages.props
<PackageReference Include="Lyo.Parameters" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Lyo.Parameters --version 2.0.0
                    
#r "nuget: Lyo.Parameters, 2.0.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Lyo.Parameters@2.0.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Lyo.Parameters&version=2.0.0
                    
Install as a Cake Addin
#tool nuget:?package=Lyo.Parameters&version=2.0.0
                    
Install as a Cake Tool

Lyo.Parameters

A named parameter with a declared type, an optional allowed-value list, and a runtime value supplied as a string is what jobs, reports, and query templates all describe. That model used to live in two places — the keyed-value contracts in Lyo.Common.Core/Parameters/ and the definition model in Lyo.Query.Models/Parameters/ — which meant every consumer imported both namespaces and Lyo.Query.Models was the de facto owner of a concept that has nothing to do with querying.

This package is that model in one place, under one namespace, depending on neither persistence nor the query stack. The three types that genuinely need a query request (ParameterOptionsJson, ParameterOptions, ParameterOptionsBinder) stayed behind in Lyo.Query.Models.

Features

  • Keyed values. LyoKeyedValueExtensions and ILyoKeyedValue for reading typed values out of string-keyed parameter bags.
  • Definitions. LyoParameterSpec — type, name, requiredness, default, and allowed values.
  • Allowed-value lists. ParameterListJson, ParameterOptionsItem, ParameterListJsonKind, ParameterOptionsKind (Static, Query, Sproc).
  • Validation. LyoParameterValidator checks supplied values against their spec.
  • Default channel. LyoParameterDefaults and LyoParameterDefaultKind keep "what type is this value" separate from "how is its default written", so a System.DateTime parameter can default to an expression and still be edited and validated as a date.
  • JSON coercion. LyoParameterValueJson converts loose text into the JSON a declared type accepts, so the validator and the resolver agree by construction.
  • Mapping. LyoParameterMapper moves between runtime values and definitions.

Examples

Read typed values from a parameter bag

using Lyo.Parameters;

var asOf = parameters.GetValue<DateOnly?>("AsOfDate");
var includeVoid = parameters.GetValue<bool>("IncludeVoided");

A DateTime parameter whose default is yesterday

using Lyo.Parameters;

// Type still describes the value; the default is authored separately.
var spec = new LyoParameterSpec(
    "AsOfDate",
    "System.DateTime",
    DefaultKind: LyoParameterDefaultKind.Expression,
    DefaultTemplate: "{DateTime.UtcNow.AddDays(-1):yyyy-MM-dd}");

// resolver comes from DI: AddFormatterService registers one over IFormatterService.
if (LyoParameterDefaults.TryResolve(spec, literalValue: null, resolver, out var value, out var error))
    request.Parameters.Add(new(spec.Key, spec.Type, value));
else
    errors.Add(error!);

Package contents

  • LyoKeyedValueExtensions, ILyoKeyedValue — the keyed-value contract and typed accessors.
  • LyoParameterValidator, LyoParameterSpec, LyoParameterMapper — the definition model and its checks.
  • LyoParameterDefaults, LyoParameterDefaultKind, LyoParameterValueJson, LyoTemplateResolver — the default channel and the JSON coercion both it and validation rely on.
  • ParameterOptionsKind, ParameterOptionsItem, ParameterListJsonKind, ParameterListJson — allowed-value lists and their JSON shapes.

Kinds of defaults

  • Literal — the default is the value stored on the definition, already valid for the declared type. This is the historical behaviour and the value every existing row reads as.
  • Expression — the default is the template in DefaultTemplate, rendered when no value is supplied. The rendered text is normalized to the declared type and then validated like any other value, so validation stays type-strict.
  • Rendered text is coerced to the declared type, not just quoted: a template renders through ToString() with whatever format specifier the author wrote, so {DateTime.Now} yields the culture spelling (8/26/2026 10:33:14 AM) rather than ISO, and {Count:N0} on an int yields 1,234. LyoParameterValueJson.Normalize parses those — including group separators and a currency symbol — and re-serializes canonically, so display formatting never changes what type the value is.
  • Coercion is about spelling, never about the type. Fractional text on an integer parameter ({Total:N2} on an Int32) is rejected rather than truncated, percent formatting ({Rate:P} renders 12.34 % for a stored 0.1234) is rejected rather than stored a hundred times too large, and text that is no date at all still fails a DateTime.
  • Rendering needs a LyoTemplateResolver, which Core declares but does not implement: Lyo.Formatter's AddFormatterService registers one over SmartFormat. A host without a formatter keeps working — only a parameter that actually declares an expression default fails, and it fails naming the missing registration.
  • LyoParameterValidator.ValidateSpec rejects a half-set channel (a template on a Literal, or Expression with no template), so bad metadata fails on save rather than on every run that needs the default.

Dependencies

Generated from ProjectReference / PackageReference (same model as docs/Lyo.ProjectGraph.html).

  • Lyo.Common.Metadata (direct, lyo)
  • Lyo.Exceptions (direct, lyo)
  • Lyo.Common.Core (transitive, lyo)
  • Microsoft.Bcl.AsyncInterfaces 10.0.5 (transitive, microsoft, netstandard2.0)
  • System.Memory 4.6.3 (transitive, microsoft, netstandard2.0)
  • System.Text.Json 10.0.5 (transitive, microsoft, netstandard2.0)
Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (9)

Showing the top 5 NuGet packages that depend on Lyo.Parameters:

Package Downloads
Lyo.Query.Models

Query models for building and representing queries - QueryNode, QueryRequest, ConditionNode, SortBy, builders. Shared by Lyo.Query and Lyo.Api.

Lyo.Web.Components

Blazor components library for the Lyo web UI framework with MudBlazor integration.

Lyo.Formatter

Text templating library using SmartFormat for building templates with named placeholders, pluralization, localization, and rich formatting. Add context objects and format templates with minimal, intuitive syntax.

Lyo.Job.Models

Job management models and DTOs for the Lyo API job management system.

Lyo.Reporting.Models

Reporting composition models, fluent builders, API contracts, and generation hooks for the Lyo reporting stack.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
2.0.0 554 9/9/2026