Lyo.Parameters
2.0.0
dotnet add package Lyo.Parameters --version 2.0.0
NuGet\Install-Package Lyo.Parameters -Version 2.0.0
<PackageReference Include="Lyo.Parameters" Version="2.0.0" />
<PackageVersion Include="Lyo.Parameters" Version="2.0.0" />
<PackageReference Include="Lyo.Parameters" />
paket add Lyo.Parameters --version 2.0.0
#r "nuget: Lyo.Parameters, 2.0.0"
#:package Lyo.Parameters@2.0.0
#addin nuget:?package=Lyo.Parameters&version=2.0.0
#tool nuget:?package=Lyo.Parameters&version=2.0.0
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.
LyoKeyedValueExtensionsandILyoKeyedValuefor 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.
LyoParameterValidatorchecks supplied values against their spec. - Default channel.
LyoParameterDefaultsandLyoParameterDefaultKindkeep "what type is this value" separate from "how is its default written", so aSystem.DateTimeparameter can default to an expression and still be edited and validated as a date. - JSON coercion.
LyoParameterValueJsonconverts loose text into the JSON a declared type accepts, so the validator and the resolver agree by construction. - Mapping.
LyoParameterMappermoves 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 inDefaultTemplate, 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 yields1,234.LyoParameterValueJson.Normalizeparses 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 anInt32) is rejected rather than truncated, percent formatting ({Rate:P}renders12.34 %for a stored0.1234) is rejected rather than stored a hundred times too large, and text that is no date at all still fails aDateTime. - Rendering needs a
LyoTemplateResolver, which Core declares but does not implement:Lyo.Formatter'sAddFormatterServiceregisters 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.ValidateSpecrejects 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.AsyncInterfaces10.0.5(transitive, microsoft, netstandard2.0)System.Memory4.6.3(transitive, microsoft, netstandard2.0)System.Text.Json10.0.5(transitive, microsoft, netstandard2.0)
| Product | Versions 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. |
-
.NETStandard 2.0
- Lyo.Common.Metadata (>= 2.0.0)
- Lyo.Exceptions (>= 2.0.0)
-
net10.0
- Lyo.Common.Metadata (>= 2.0.0)
- Lyo.Exceptions (>= 2.0.0)
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 |